C++ Primer学习总结 第12章 动态内存

第12章 动态内存


1.    申请并使用shared_ptr.  P400

 

2.    shared_ptr计数. P402

赋值, 拷贝, 向函数传递一个智能指针, 或函数返回一个智能指针都会增加当前智能指针的计数.

C++ Primer学习总结 第12章 动态内存_第1张图片

 

3.    不同对象间利用智能指针共享数据的例子.

C++ Primer学习总结 第12章 动态内存_第2张图片

 

4.    使用new来动态申请内存. P407

默认情况下,new申请的内存对象都是默认初始化的.

 

5.    new申请的const对象必须初始化. P408

如果申请内置类型, 那么必须用括号()初始化. 如果申请类类型, 如果该类对象有默认构造函数, 可以默认初始化. 但是如果该类对象没有默认构造函数, 那么必须用其他构造函数初始化.

C++ Primer学习总结 第12章 动态内存_第3张图片

 

6.    使用delete.  P409

delete只能删除指针且该指针指向的必须是用过new申请的内存空间.

 

7.    shared_ptr和new结合使用. P412

 

8.    不要混用智能指针和内置指针.P 413

 

9.    unique_ptr对象初始化.   P417

由于unique_ptr”拥有”它的对象, 所以它不能拷贝和赋值, 且只能用内置指针通过括号()初始化它.

但是我们可以拷贝或赋值一个即将被消耗的unique_ptr. 如下面函数所示:

C++ Primer学习总结 第12章 动态内存_第4张图片

 

10.  unique_ptr对象的reset()函数和release()函数用法.  P418

 

11.  unique_ptr传递自己的删除器:  P419

shared_ptr传递自己的删除器也类似于unique_ptr.

C++ Primer学习总结 第12章 动态内存_第5张图片

 

12.  weak_ptr 使用例子 P420.

C++ Primer学习总结 第12章 动态内存_第6张图片

 

13.  new分配动态数组.  P424

无论方式1还是方式2,得到的都是数组元素类型的指针而不是得到一个数组类型,所以如果对其用begin或end都是错的

C++ Primer学习总结 第12章 动态内存_第7张图片

 

14.  使用智能指针管理动态数组. P425

推荐使用unique_ptr来管理数组.

C++ Primer学习总结 第12章 动态内存_第8张图片



你可能感兴趣的:(C++,C++,C++11,Primer,第5版本)