【发布时间】:2013-08-05 11:25:20
【问题描述】:
int* arr = new int[count];
delete arr;
为什么会这样?我已经检查过了,它实际上释放了内存。根据我的阅读,我需要 delete[] arr; 否则它实际上不会释放所有内存。
【问题讨论】:
-
“为什么会这样?” - 它没有,它似乎在工作。
-
没有括号,你只调用一个析构函数,而不是数组中的所有析构函数。另见stackoverflow.com/questions/2425728/…
-
它可以工作,因为 delete 和 delete[] 对于 POD 类型具有相同的结果。在这种情况下没有内存泄漏。但是如果不是 POD 类型,程序将会崩溃(只有第一个元素会被破坏,这会导致内存泄漏)。你可以尝试使用 Valgrind 来深入了解这个问题
标签: c++ memory memory-management memory-leaks