C++ Primer (第五版)-第十二章 动态内存

文章目录

  • 序言
  • 12.1 动态内存和智能指针
  • shared_ptr类
    • make_shared函数
    • shared_ptr的拷贝和赋值
    • shared_ptr 自动销毁所管理的对象
    • shared_ptr 还会自动释放相关联的内存
    • 定义 StrBlob类
    • 直接管理内存
    • 指针值和delete
    • 动态对象的生存期在知道被释放时为止
    • shared_ptr和new结合使用
    • 不要混合使用普通指针和智能指针
    • 智能指针和异常
    • 智能指针和哑类
  • unique_ptr
    • 使用unique_ptr参数和返回unique_ptr
    • 向unique_pte传递删除器
  • weak_ptr
    • 核查指针类
    • 指针操作
  • 动态数组
    • new 和数组
    • 分配一个数组会得到一个元素类型的指针
    • 初始化动态分配对象的数组
    • 动态分配一个空数组时合法的
    • 释放动态数组
    • 智能指针和动态数组
  • allocator 类
    • allocator 分配未构造的内存
    • 拷贝和填充未初始化内存的算法
  • 使用标准库:文本查询程序
    • 文本程序设计
    • 数据结构
    • 在类之间共享数据
    • 使用TextQuery类
    • 查询程序类的定义
    • TextQuery构造函数
    • QueryResult类
    • 打印结果
    • 小结
    • 术语图

序言

C++ Primer (第五版)-第十二章 动态内存_第1张图片

C++ Primer (第五版)-第十二章 动态内存_第2张图片

12.1 动态内存和智能指针

C++ Primer (第五版)-第十二章 动态内存_第3张图片

shared_ptr类

C++ Primer (第五版)-第十二章 动态内存_第4张图片
C++ Primer (第五版)-第十二章 动态内存_第5张图片
C++ Primer (第五版)-第十二章 动态内存_第6张图片

make_shared函数

在这里插入图片描述

//p6指向一个动态分配的空 vector
auto p6=make_shared<vector<string>>();

shared_ptr的拷贝和赋值

C++ Primer (第五版)-第十二章 动态内存_第7张图片

shared_ptr 自动销毁所管理的对象

C++ Primer (第五版)-第十二章 动态内存_第8张图片

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

在这里插入图片描述
C++ Primer (第五版)-第十二章 动态内存_第9张图片
C++ Primer (第五版)-第十二章 动态内存_第10张图片
C++ Primer (第五版)-第十二章 动态内存_第11张图片
在这里插入图片描述
C++ Primer (第五版)-第十二章 动态内存_第12张图片

定义 StrBlob类

C++ Primer (第五版)-第十二章 动态内存_第13张图片C++ Primer (第五版)-第十二章 动态内存_第14张图片
C++ Primer (第五版)-第十二章 动态内存_第15张图片
C++ Primer (第五版)-第十二章 动态内存_第16张图片

直接管理内存

C++ Primer (第五版)-第十二章 动态内存_第17张图片

*
C++ Primer (第五版)-第十二章 动态内存_第18张图片

C++ Primer (第五版)-第十二章 动态内存_第19张图片

指针值和delete

动态对象的生存期在知道被释放时为止

C++ Primer (第五版)-第十二章 动态内存_第20张图片

C++ Primer (第五版)-第十二章 动态内存_第21张图片


C++ Primer (第五版)-第十二章 动态内存_第22张图片
C++ Primer (第五版)-第十二章 动态内存_第23张图片

shared_ptr和new结合使用

C++ Primer (第五版)-第十二章 动态内存_第24张图片
C++ Primer (第五版)-第十二章 动态内存_第25张图片

不要混合使用普通指针和智能指针

C++ Primer (第五版)-第十二章 动态内存_第26张图片
在这里插入图片描述

C++ Primer (第五版)-第十二章 动态内存_第27张图片

智能指针和异常

智能指针和哑类


C++ Primer (第五版)-第十二章 动态内存_第28张图片

unique_ptr

C++ Primer (第五版)-第十二章 动态内存_第29张图片
C++ Primer (第五版)-第十二章 动态内存_第30张图片

使用unique_ptr参数和返回unique_ptr

C++ Primer (第五版)-第十二章 动态内存_第31张图片

向unique_pte传递删除器


在这里插入图片描述

weak_ptr

C++ Primer (第五版)-第十二章 动态内存_第32张图片
C++ Primer (第五版)-第十二章 动态内存_第33张图片
C++ Primer (第五版)-第十二章 动态内存_第34张图片

核查指针类

在这里插入图片描述

指针操作

C++ Primer (第五版)-第十二章 动态内存_第35张图片
C++ Primer (第五版)-第十二章 动态内存_第36张图片

动态数组


C++ Primer (第五版)-第十二章 动态内存_第37张图片

new 和数组

C++ Primer (第五版)-第十二章 动态内存_第38张图片
在这里插入图片描述

分配一个数组会得到一个元素类型的指针

初始化动态分配对象的数组

动态分配一个空数组时合法的

C++ Primer (第五版)-第十二章 动态内存_第39张图片

释放动态数组

智能指针和动态数组

C++ Primer (第五版)-第十二章 动态内存_第40张图片
C++ Primer (第五版)-第十二章 动态内存_第41张图片

在这里插入图片描述

allocator 类


C++ Primer (第五版)-第十二章 动态内存_第42张图片

allocator 分配未构造的内存


C++ Primer (第五版)-第十二章 动态内存_第43张图片
C++ Primer (第五版)-第十二章 动态内存_第44张图片

拷贝和填充未初始化内存的算法


使用标准库:文本查询程序

文本程序设计

数据结构

在这里插入图片描述
C++ Primer (第五版)-第十二章 动态内存_第45张图片

在类之间共享数据

使用TextQuery类

C++ Primer (第五版)-第十二章 动态内存_第46张图片
C++ Primer (第五版)-第十二章 动态内存_第47张图片

查询程序类的定义


在这里插入图片描述
C++ Primer (第五版)-第十二章 动态内存_第48张图片

TextQuery构造函数


C++ Primer (第五版)-第十二章 动态内存_第49张图片

QueryResult类

在这里插入图片描述
C++ Primer (第五版)-第十二章 动态内存_第50张图片

打印结果

C++ Primer (第五版)-第十二章 动态内存_第51张图片

小结

术语图

你可能感兴趣的:(C++,Primer笔记,c++,开发语言)