int main(){
int *p=new int[5];
//case 1: delete p;
//case 2: p++;delete[] p;
return 0;
}
如果我分别使用案例1和案例2会怎样?
答案 0 :(得分:5)
将会发生什么
案例1:未定义的行为。
调用p
(而不是new
)未返回 new[]
,因此delete p;
为UB。
案例2:未定义的行为。
调用p+1
时未返回 new[]
,因此p++;delete[] p;
为UB。
答案 1 :(得分:0)
您可以释放未分配的内存。 您必须使用新的
在相同的指针值上调用delete