C++ 唯一指针 : memory leak

标签 c++ c++11 memory-leaks smart-pointers unique-ptr

我对唯一指针的释放方法有点困惑。这是我的示例程序。

class Test
{
public:
    Test(){std::cout << "ctor" << std::endl;}
    ~Test(){std::cout << "dtor" << std::endl;}
};

int main() {
    std::unique_ptr<Test> ptr(new Test());
    ptr.release(); // memory leak
    //ptr.reset(); // this is ok but not necessary
    return 0;
}

输出:

ctor

因为它没有打印 dtor 我假设它没有调用 Test 的析构函数,这将导致内存泄漏。 吗?

最佳答案

release 一词的意思是“将所有权 释放给调用者”。所以不,它没有调用析构函数。

如果您想显式调用析构函数,那么您必须手动删除 released 指针,或者只调用重置,这是执行此操作的首选方法。
如果您不需要明确地执行此操作,那么您可以保留它,它会自动处理。

关于C++ 唯一指针 : memory leak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24566660/

相关文章:

c++ - 如何检测 Windows 系统托盘的变化?

c++ - uint32_t如何保证32位?

c++ - 为什么 std::result_of 不适用于 lambda?

c++ - 是否有可能在其工作后将线程连接到 'parallel for' 区域?

c++ - 比有序列表的二进制搜索更快

c++11:std::forward 的微妙之处:身份真的有必要吗?

c++ - 使用默认构造函数在 vector 中放置

java - java应用程序的系统内存使用量与堆使用量相比巨大

python - 删除 dataframe 列时 pandas 内存泄漏?

ios - 不了解潜在的泄漏