delete[]
如果在这个例子中正常的delete
不会导致内存泄漏,那么为什么它存在呢?
void foo() {
int* array = new int[10000000];
delete array;
}
int main() {
foo();
}
第一个快照是在程序启动时拍摄的,第二个快照是在第二行代码结果之后拍摄的,第三个快照是在退出时拍摄的foo()
。使用 VS22、编译器 clang 在 Debug 版本中执行了分析,结果与 MSVC 类似。
也许当你改变编译器时,魔法就会给你带来麻烦?