如果我们在增加指针后删除数组会发生什么?

时间:2017-02-21 09:04:48

标签: c++ arrays dynamic

int main(){

int *p=new int[5];

//case 1: delete p;
//case 2: p++;delete[] p;


return 0;
}

如果我分别使用案例1和案例2会怎样?

2 个答案:

答案 0 :(得分:5)

  

将会发生什么

案例1:未定义的行为。

调用p(而不是new)未返回

new[],因此delete p;为UB。

案例2:未定义的行为。

调用p+1时未返回

new[],因此p++;delete[] p;为UB。

答案 1 :(得分:0)

您可以释放未分配的内存。 您必须使用新的

在相同的指针值上调用delete