Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 删除数组指针c++;什么时候增加指针?_C++_Pointers - Fatal编程技术网

C++ 删除数组指针c++;什么时候增加指针?

C++ 删除数组指针c++;什么时候增加指针?,c++,pointers,C++,Pointers,我有: 但如果我有: int *ptr = new int[8]; delete[] ptr; // it ok, all ptr is delete; 我的问题: delete[]是否将所有ptr从ptr[0]删除到ptr[7]或仅从ptr[1]删除到ptr[7]? 如果它从ptr[1]删除到ptr[7],那么delete[]如何知道这次要删除的实际大小;这是未定义的行为,通常意味着它会使程序崩溃 传递到delete[]的指针必须是以前从new[]返回的指针。没有例外*new[]返回了指

我有:

但如果我有:

int *ptr = new int[8];
delete[] ptr;  //  it ok, all ptr is delete;
我的问题:

delete[]
是否将所有
ptr
ptr[0]
删除到
ptr[7]
或仅从
ptr[1]
删除到
ptr[7]

如果它从
ptr[1]
删除到
ptr[7]
,那么
delete[]
如何知道这次要删除的实际大小;这是未定义的行为,通常意味着它会使程序崩溃

传递到
delete[]
的指针必须是以前从
new[]
返回的指针。没有例外*
new[]
返回了指向数组第一个元素的指针,因此必须将指向数组第一个元素的指针传递给
delete[]


*唯一的例外是,您可以传递空指针,在这种情况下,它将不起任何作用。

您不能只释放分配的一部分-全部或无是您唯一的选择。
int *ptr = new int[8];
ptr++; 
delete[] ptr;