请告诉我第3行正在做什么。
int main(){
int *p = new int[3];
*p++=0; // What's this line doing?
delete p;
return 0;
}
答案 0 :(得分:3)
*p++=0;
表示:
sizeof(int)
零字节写入存储在p
。p
增加sizeof(int)
的值。换句话说 - 你已经增加了指针,然后传递给delete
的内容与运算符new[]
返回的内容不同。
正如@FredLarson所提到的,你必须使用delete [] p;
才能删除数组。
另外,我建议你阅读指针,指针算术和前/后增量。从我们的Definitive C++ Book Guide and List中选择一本书。
答案 1 :(得分:1)
数组中的第一个元素设置为0,p先前一个指向第二个元素。
delete p; // this has undefined behaviour
请改用delete [] p;
。
答案 2 :(得分:0)
您将p [0]设置为0并将指针前进到p [1]。你想做什么?