Nis*_*mar 4 c++ memory-leaks smart-pointers unique-ptr c++11
我对独特指针的释放方法感到困惑.这是我的示例程序.
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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
ctor
Run Code Online (Sandbox Code Playgroud)
因为它不打印dtor我假设它不调用析构函数Test会导致内存泄漏.是吗?
Meh*_*dad 11
这个词的release意思是"释放对呼叫者的所有权 ".所以不,析构函数不会被它调用.
如果要显式调用析构函数,则必须手动delete执行released指针,或者只调用reset,这是执行此操作的首选方法.
如果您不需要明确地执行此操作,那么您可以保留它并且它将自动得到处理.
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |