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



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

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的意思是"向调用者释放所有权"。所以不,析构函数不是由它调用的。

如果要显式调用析构函数,则必须手动调用delete released指针,或者只调用reset,这是首选的方法。
如果你不需要明确地这样做,那么你可以离开它,它会自动得到处理。

相关内容

  • 没有找到相关文章

最新更新