C++ Primer Chapter 12-1
来源:互联网 发布:音频发生器软件 编辑:程序博客网 时间:2024/06/11 18:03
1:shared_ptr 和 unique_ptr 都是智能指针,分别指向可共享的对象和只能独占的对象,这些指针都是可以自动释放的。他们都是模板类 。
2: new 的用法 :
1) type * p = new type;
该用法是用来申明一个type类型内存,然后把其地址 给 p;这个是申请单个内存块。另外该方法是隐含的调用 type类型的默认构造函数,也可以显示的在 type 后面加 () ,在括号中加参数来显示调用构造函数。如:
int * p = new int (89);
2)type * p = new type [n];
这个用法是来申请一块连续的内存,包含 n 个 type 类型的内存块。即用 [ ] 运算符来说明申请内存个数。并返回第一个元素的指针。
3:shared_ptr 能够的到与其共享对象的智能指针数量。 p.use_count()
4:make_shared() 函数能够在动态内存中申请一块内存,然后返回一个智能指针指向该对象。该函数是一个模板函数,需要用 < type > 中的类型来实例化。
make_shared<string> (10,"9");
// 利用string(size_type size,char * str)来构造一个string,并返回 shared<string> 指针
另外该函数的参数是由 type 的构造函数决定的,如果参数符合type 的某个构造函数就会调用该构造函数,如果没有参数就会调用默认构造函数。
5:shared_ptr 都会记录其所指对象的引用计数,如果它指向了其他的变量,那么原来对象的所有引用计数值减一,并且新指向的对象所有引用计数值加一,如果原来对象没有指向其的指针,则释放其内存。
6:shared_ptr 的析构函数会递减其指向对象的引用计数值,如果计数值变为零,那么释放对象内存。
7:指针的位数只与编译器的位数有关,32 位 为 4 字节,64 位 为 8 字节,与操作系统位数没有太大关系。
8:动态内存可以使得多个对象一起共用一个底层数据,这样可以实现数据的共享。
9:动态内存申请 const 类型对象和定义内置的 const 一样,需要进行初始化, 如果该类型有默认构造函数,则可以隐式的初始胡,如果没有则需要显式的初始化。
10:如果 new 申请内存失败,那么会抛出异常,如果我们不想让其抛出异常,可以用定位 new。
11:delete 只能删除一个动态分配的内存 ,详见 page 409
12:一个指针(内置类型) 被销毁时,其所指的内存不会发生什么(这样动态申请的内存就存在泄漏问题)
0 0
- C++ Primer Chapter 12-1
- 《C primer plus》笔记--Chapter 1
- C++Primer-Function chapter
- C primer plus -- Chapter 2
- C++ Primer Chapter 1
- C++ Primer Chapter 12-2
- C++ Primer Chapter 12-3
- C++ Primer Chapter 6-1
- C++ Primer Chapter 7-1
- C++ Primer Chapter 8-1
- C++ Primer Chapter 9-1
- C++ Primer Chapter 10-1
- C++ Primer Chapter 11-1
- C++ Primer Chapter 13-1
- C++ Primer Chapter 14-1
- C++ Primer Chapter 15-1
- c primer plus Chapter 14 p383
- C++Primer Chapter One学习笔记
- Android studio快捷键重写继承父类的抽象方法
- UML之了解
- C++ Primer Chapter 11-3
- Python语言程序设计
- 动态规划练习——怪盗基德的滑翔翼
- C++ Primer Chapter 12-1
- 基于 Redux 的 React Native 应用架构
- C++ Primer Chapter 12-2
- sublime text3快捷键大全
- 使用JQuery-zTree生成树结构
- C++ Primer Chapter 12-3
- 伽玛校正(Gamma Correction)
- ios学习笔记2--UIButton基础知识和自定义详解
- java/js/html干货-肯定有你想要的