【发布时间】:2018-07-26 02:57:07
【问题描述】:
-
这里有什么错误?
int main() { int* pointer = new int [1000]; if (!pointer) return -1; for (int j = 0; j < 1000; j++) *pointer++ = j; If (pointer) { delete [] pointer; pointer = NULL; } return 0; }
【问题讨论】:
-
pointer不再保留它在返回new int[1000]时收到的原始值。语句*pointer++ = j;在每次迭代时将其向下递增。因此,delete [] pointer调用未定义的行为。为枚举使用不同的指针。最后,停止垃圾邮件标签。这篇文章与 C# 和 C 完全无关。如果这是 C,那么第一个问题就不是new或delete不是语言可以理解的结构。 -
new [ ]向您返回了一个值。发出delete [ ]调用时必须使用相同的值。显然你没有这样做。
标签: c++