C/C++教程

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

本文主要是介绍C++11小结:使用智能指针的坑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • unique_ptr
    • release 不会释放内存

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

这篇关于C++11小结:使用智能指针的坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!