是的,我是那些从 Java 学习 C++ 的人之一,被自动垃圾收集器宠坏了。有一种特殊情况,我想知道我是否正在泄漏内存。让我们在 C++ 中考虑:
bool *test = new bool(false);
test = new bool(true);
delete test;
我在这里泄漏内存了吗?或者我应该在分配新值之前先调用 delete
吗?像这样:
bool *test = new bool(false);
delete test;
test = new bool(true);
delete test;
我的直觉告诉我第一个是正确的,因为指针 test
指向内存中的同一地址,并为其变量分配一个新值,不会改变这个地址。或者 new
运算符是否在内存中分配了不同的地址?任何人都可以给我一个线索,还是我一起弄错了?
最佳答案
是的,你在泄漏,C++ 的方法是:
bool test = false;
test = true;
// ta-da - no leak.
您可以采用第二种方法 - 但是您可能会皱眉......
关于c++ - 为变量分配新值时内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982822/