首页 > 代码库 > C++ primer 第十二章笔记之 动态内存

C++ primer 第十二章笔记之 动态内存

动态内存:

运算符:new,delete

智能指针:

头文件:memory
shared_ptr:允许多个指针指向同一个对象;
unique_ptr:"独占"所指向的对象;
weak_ptr:一种弱引用,指向shared_ptr所管理的对象;

shared_ptr类

智能指针也是模板,创建指针时,提供指针指向的类型;

//创建:
shared_ptr<string> p1;
//若p1不为空,检测它是否指向一个空string
if( p1 &&p1->empty() )
    *p1 = "cjz";

make_shared 函数

shared_ptr<int> p3 = make_shared<int>(24);
shared_ptr<string> p4 = make_shared<string>(10,‘9‘);
shared_ptr<int> p5 = make_shared<int>();
//使用auto:p6指向一个动态分配的空vector<string>
auto p6 = make_shared<vector<string>>();

引用计数:一旦一个shared_ptr的计数器变为0,它就会自动释放自己所管理的对象;

shared_ptr自动销毁所管理的对象,通过 析构函数 完成;

shared_ptr还会自动释放相关联的内存;

对于一块内存,只要有任何shared_ptr对象引用它,它就不会被释放掉;

使用动态内存的一个常规原因是允许多个对象共享相同的状态;

 

C++ primer 第十二章笔记之 动态内存