c ++唯一指针:内存泄漏

时间:2014-07-04 04:21:36

标签: 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的析构函数,这将导致内存泄漏。 吗?

1 个答案:

答案 0 :(得分:11)

单词release表示&#34;将所有权释放给来电者&#34;。所以不,析构函数不被它调用。

如果要明确调用析构函数 ,则必须手动delete release d指针,或者只调用reset,这是首选方式。
如果您不需要明确地执行此操作,那么您可以离开它并自动处理它。