17.C++ 智能指针详解:从基础用法到高级技巧

一、前言

C/C++中,指针是一个非常重要的概念,其强大但也麻烦,对指针不熟悉的可以看看这篇文章:指针与引用

它的麻烦之处就在于一旦你申请了内存,那就必须要手动去释放它,否则就会造成内存泄漏。

当然了,在代码量少的情况下你可能会不以为意,因为这点内存即使泄露了也根本看不出来,并且一旦程序执行结束,所有内存都会被系统释放掉。

但如果写比较大点的项目,内存管理就显得很重要了,比如QQ,微信等等,一般都是一直挂着的,如果挂几个小时就把电脑内存耗干净了,瞬间电脑变卡,谁还用啊。

所以智能指针的作用就是防止我们忘记释放内存,帮助我们管理内存的。

当然也有多次释放一个指针,导致程序崩溃的问题也能就此解决。

而且很多C/C++岗位,在面试C/C++内容时,基本也都会考量对指针指针的理解程度。

二、使用方法

虽然智能指针听着很高级,但使用起来并不算复杂,熟悉之后,其实和普通指针差别不大,甚至会更加好用。

C++11之后,智能指针共有三个:shared_ptrunique_ptrweak_ptr

其所在的头文件为:memory

但由于vs自动包含了这个头文件,所以可以直接使用。

1.shared_ptr

看名字就知道,它是可以分享的指针,其使用方法很简单,比如这里有一个类:

class User {
public:
	User() {
		cout << "这是构造函数" << endl;
	}
	~User()
	{
		cout << "这是析构函数" << endl;
	}

	void TestFun() {
		cout << "这是一个测试函数" << endl;
	}

};

然后使用共享智能指针:

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux