use*_*283 1 c++ memory-leaks c++11
#include<iostream>
#include<memory>
using namespace std;
int main()
{
unique_ptr<int> p(new int);
*p = 10;
cout<<*p<<endl;
p = NULL;
if(p)
cout<<"It's NOT NULL\n";
else
cout<<"It's NULL NOW\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
//当我为p分配NULL时,程序完成后,它将删除//有NULL的p.虽然删除NULL不会导致任何问题,但是之前由p //保留的内存不会被释放.我对么 .
虽然你应该使用p = nullptr而不是使用内存泄漏p = NULL.这是因为std::unique_ptr重载了nullptr_t类型的赋值运算符:
从标准,效果来看
unique_ptr& operator=(nullptr_t) noexcept;
是打电话reset().而这反过来又释放了任何有针对性的记忆.