【发布时间】:2017-04-28 06:52:54
【问题描述】:
当将new[] 与delete 组合而不是delete[] 时,究竟会发生什么?试了下面的代码,发现没有内存泄漏,那为什么delete上的new[]返回的指针不会导致内存泄漏呢?
编译器如何知道要释放的字节数?
int main() {
constexpr int size = 102400;
while (1) {
char* buffer = new char[size]{};
delete buffer;
}
return 0;
}
【问题讨论】:
-
我这里不是说valgrind,我想知道如果你删除了一个new[]指针,它怎么算出要释放的块大小?
-
现在你有一个很好的问题。但更进一步:它如何确定您分配的数组是一个元素还是一百万个元素?
-
没有
[],代码不需要工作,但也不需要不工作。
标签: c++ memory-leaks delete-operator