增加指针时删除数组指针c ++?

Hai*_*yen 5 c++ pointers

我有:

int *ptr = new int[8];
delete[] ptr;  //  it ok, all ptr is delete;
Run Code Online (Sandbox Code Playgroud)

但如果我有:

int *ptr = new int[8];
ptr++; 
delete[] ptr;
Run Code Online (Sandbox Code Playgroud)

我的问题:

是否delete[]删除所有ptr来自ptr[0]ptr[7]或刚刚ptr[1]ptr[7]?而且,如果它删减ptr[1]ptr[7],如何delete[]知道真正的大小来删除这个时间呢?

use*_*751 18

无论; 它是未定义的行为,通常意味着它会使程序崩溃.

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

*唯一的例外是您可以传递NULL指针,在这种情况下它将不执行任何操作.