参考:《C++ primer 第五版》
前言
程序中常用的存储形式如下。
静态内存:static对象,类static的数据成员,函数外的变量。
栈内存:函数内的非static对象。
自由空间或堆:动态分配的对象,程序控制生命周期。
动态内存与智能指针
从前,我们使用运算符new和delete来管理动态内存。但是使用很容易出错误,造成泄露。
新标准提供两个智能指针,shared_ptr和unique_ptr,来自动释放管理的动态对象。前者可以多个指针指向同一个对象,后者独占对象。另外还有weak_ptr,是一个伴随类,弱引用,指向shared_ptr管理的对象。
常见的用法(我们注意其中的get(),我觉得智能指针,并不是指针可以看作是指针的管理器):