c++ - 为变量分配新值时内存泄漏?

标签 c++ memory pointers new-operator memory-leaks

是的,我是那些从 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/

相关文章:

c++ - 如何在不创建新线程的情况下异步执行代码

c++ - valgrind : invalid read of size 1 during strcpy

c - 什么情况下应该使用函数签名void *(*)()?

c++ - 如何使用可变消息抛出 std::exceptions?

Android 在内存问题中创建文件夹

ios - 模拟器和设备上的“事件字节”不同

c - 添加一行代码改变变量的内存地址

c - 如何将字符串中的指针值传递给指针

java - 将数组/指针从 C 转换为 Java

c++ - 在目标纹理上复制源纹理,其中源大于目标