编程语言
首页 > 编程语言> > C++11小结:使用智能指针的坑

C++11小结:使用智能指针的坑

作者:互联网

目录

unique_ptr

release 不会释放内存

release 只会放弃所有权,不会释放内存资源;
reset 既放弃所有权,还会释放内存资源(调用删除器)。如果有参数,还会接管参数对应的新资源。

#include <iostream>
#include <memory>

using namespace std;

class A
{
public:
	A()
	{
		cout << "Create A object" << endl;
	}
	~A()
	{
		cout << "Destroy A object" << endl;
	}
};

int main()
{
	unique_ptr<A> p(new A);
	p.release();

	return 0;
}

运行结果:

Create A object

可以看到,并没有调用class A的析构函数。

注意到unique_ptr::release()返回值是T*,调用release放弃所有权后,可以将内存空间交给别人来接管。

如果想要释放内存,请调用reset

标签:11,释放,调用,C++,内存,release,unique,小结,ptr
来源: https://www.cnblogs.com/fortunely/p/16370208.html