Memory management library
目录 |
智能指针 (始于 C++11)
智能指针能够实现自动化的、异常安全的对象生命周期管理。
|
定义于头文件
<memory>
|
|
指针类别 |
|
|
(C++11)
|
具有独享对象所有权语义的智能指针
(类模板) |
|
(C++11)
|
具有共享对象所有权语义的智能指针
(类模板) |
|
(C++11)
|
指向由
std::shared_ptr
管理的对象的弱引用
(类模板) |
|
(C++11 中弃用)
(C++17 中移除)
|
具有严格对象所有权语义的智能指针
(类模板) |
辅助类 |
|
|
(C++11)
|
提供基于所有者的共享指针和弱指针混合类型排序
(类模板) |
|
(C++26)
|
为共享指针和弱指针提供基于所有者的哈希
(类) |
|
(C++26)
|
提供基于所有者的共享指针和弱指针混合类型相等比较
(类) |
|
(C++11)
|
允许对象创建指向自身的
shared_ptr
(类模板) |
|
(C++11)
|
访问指向已销毁对象的
weak_ptr
时抛出的异常
(类) |
|
(C++11)
|
unique_ptr
的默认删除器
(类模板) |
智能指针适配器 (C++23 起) |
|
|
(C++23)
|
与外部指针设置器交互并在析构时重置智能指针
(类模板) |
|
(C++23)
|
创建带有关联智能指针和重置参数的
out_ptr_t
(函数模板) |
|
(C++23)
|
与外部指针设置器交互,从智能指针获取初始指针值,并在析构时重置它
(类模板) |
|
(C++23)
|
创建带有关联智能指针和重置参数的
inout_ptr_t
(函数模板) |
分配器
分配器是封装内存分配策略的类模板。这使得泛型容器能够将内存管理与数据本身解耦。
|
定义于头文件
<memory>
|
|
|
默认分配器
(类模板) |
|
|
(C++11)
|
提供分配器类型的信息
(类模板) |
|
(C++23)
|
记录由
allocate_at_least
分配的存储地址和实际大小
(类模板) |
|
(C++11)
|
用于选择支持分配器的构造函数的标签
(标签) |
|
(C++11)
|
检查指定类型是否支持使用分配器构造
(类模板) |
|
(C++20)
|
准备匹配给定类型所需的使用分配器构造风格的参数列表
(函数模板) |
|
(C++20)
|
通过使用分配器构造方式创建给定类型的对象
(函数模板) |
|
在指定内存位置通过使用分配器构造方式创建给定类型的对象
(函数模板) |
|
|
定义于头文件
<scoped_allocator>
|
|
|
(C++11)
|
为多层容器实现多层分配器
(类模板) |
|
定义于头文件
<memory_resource>
|
|
|
定义于命名空间
std::pmr
|
|
|
(C++17)
|
基于其构造时使用的
std::pmr::memory_resource
支持运行时多态性的分配器
(类模板) |
内存资源 (自 C++17 起)
内存资源实现了可由 std::pmr::polymorphic_allocator 使用的内存分配策略。
|
定义于头文件
<memory_resource>
|
|
|
定义于命名空间
std::pmr
|
|
|
(C++17)
|
封装内存资源的抽象接口类
(类) |
|
(C++17)
|
返回使用全局
std::pmr::memory_resource
的静态程序级内存资源,该资源通过全局
operator new
和
operator delete
进行内存分配与释放
(函数) |
|
(C++17)
|
返回不执行任何内存分配的静态
std::pmr::memory_resource
(函数) |
|
(C++17)
|
获取默认的
std::pmr::memory_resource
(函数) |
|
(C++17)
|
设置默认的
std::pmr::memory_resource
(函数) |
|
(C++17)
|
池资源的一组构造函数选项
(类) |
|
(C++17)
|
用于管理不同块大小内存池分配的线程安全
std::pmr::memory_resource
(类) |
|
(C++17)
|
用于管理不同块大小内存池分配的非线程安全
std::pmr::memory_resource
(类) |
|
(C++17)
|
特殊用途的
std::pmr::memory_resource
,仅在资源销毁时释放已分配的内存
(类) |
未初始化内存算法
|
定义于头文件
<memory>
|
|
|
复制对象范围到未初始化的内存区域
(函数模板) |
|
|
(C++11)
|
复制指定数量的对象到未初始化的内存区域
(函数模板) |
|
复制对象到由范围定义的未初始化内存区域
(函数模板) |
|
|
复制对象到由起始点和计数定义的未初始化内存区域
(函数模板) |
|
|
(C++17)
|
移动对象范围到未初始化的内存区域
(函数模板) |
|
(C++17)
|
移动指定数量的对象到未初始化的内存区域
(函数模板) |
|
(C++17)
|
通过
默认初始化
在由范围定义的未初始化内存区域中构造对象
(函数模板) |
|
通过
默认初始化
在由起始点和计数定义的未初始化内存区域中构造对象
(函数模板) |
|
|
(C++17)
|
通过
值初始化
在由范围定义的未初始化内存区域中构造对象
(函数模板) |
|
(C++17)
|
通过
值初始化
在由起始点和计数定义的未初始化内存区域中构造对象
(函数模板) |
|
(C++17)
|
销毁给定地址处的对象
(函数模板) |
|
(C++17)
|
销毁对象范围
(函数模板) |
|
(C++17)
|
销毁范围内的指定数量的对象
(函数模板) |
|
(C++20)
|
在给定地址处创建对象
(函数模板) |
受约束的未初始化内存算法 (since C++20)
C++20 提供了 受约束的 未初始化内存算法,这些算法接受范围参数或迭代器-哨兵对。
|
定义于头文件
<memory>
|
|
|
定义于命名空间
std::ranges
|
|
|
指定迭代器、哨位和范围上的某些操作不抛出异常
( 仅用于说明的概念* ) |
|
|
(C++20)
|
复制对象范围到未初始化的内存区域
(算法函数对象) |
|
(C++20)
|
复制指定数量的对象到未初始化的内存区域
(算法函数对象) |
|
(C++20)
|
复制对象到由范围定义的未初始化内存区域
(算法函数对象) |
|
(C++20)
|
复制对象到由起始点和计数定义的未初始化内存区域
(算法函数对象) |
|
(C++20)
|
移动对象范围到未初始化的内存区域
(算法函数对象) |
|
(C++20)
|
移动指定数量的对象到未初始化的内存区域
(算法函数对象) |
|
通过
默认初始化
在由范围定义的未初始化内存区域中构造对象
(算法函数对象) |
|
|
通过
默认初始化
在由起始点和计数定义的未初始化内存区域中构造对象
(算法函数对象) |
|
|
通过
值初始化
在由范围定义的未初始化内存区域中构造对象
(算法函数对象) |
|
|
通过
值初始化
在由起始点和计数定义的未初始化内存区域中构造对象
(算法函数对象) |
|
|
(C++20)
|
销毁给定地址的对象
(算法函数对象) |
|
(C++20)
|
销毁对象范围
(算法函数对象) |
|
(C++20)
|
销毁范围内的指定数量的对象
(算法函数对象) |
|
(C++20)
|
在给定地址创建对象
(算法函数对象) |
显式生命周期管理 (始于 C++23)
|
定义于头文件
<memory>
|
|
|
在给定存储中隐式创建对象并复用其对象表示
(函数模板) |
|
组合类设计类型 (始于 C++26)
|
定义于头文件
<memory>
|
|
|
(C++26)
|
包含动态分配对象且具有类值语义的包装器
(类模板) |
|
(C++26)
|
包含动态分配对象且具有类值语义的多态包装器
(类模板) |
杂项
|
定义于头文件
<memory>
|
|
|
(C++11)
|
提供指针式类型的信息
(类模板) |
|
(C++20)
|
从指针式类型获取原始指针
(函数模板) |
|
(C++11)
|
获取对象的实际地址,即使
&
运算符被重载
(函数模板) |
|
(C++11)
|
在缓冲区中对齐指针
(函数) |
|
(C++20)
|
告知编译器指针已对齐
(函数模板) |
|
(C++26)
|
检查指针是否指向对齐值至少为指定值的对象
(函数模板) |
底层内存管理
包括例如 operator new 、 operator delete 、 std::set_new_handler 。
|
定义于头文件
<new>
|
C风格内存管理
包括例如 std::malloc 、 std::free 。
|
定义于头文件
<cstdlib>
|
未初始化存储 (直至 C++20)
提供了若干用于创建和访问原始存储空间的实用工具。
|
定义于头文件
<memory>
|
|
|
(C++17 中弃用)
(C++20 中移除)
|
允许标准算法将结果存储到未初始化内存中的迭代器
(类模板) |
|
(C++17 中弃用)
(C++20 中移除)
|
获取未初始化存储
(函数模板) |
|
(C++17 中弃用)
(C++20 中移除)
|
释放未初始化存储
(函数模板) |
垃圾收集器支持 (直至 C++23)
|
定义于头文件
<memory>
|
|
|
(C++11)
(removed in C++23)
|
声明对象不可被回收
(函数) |
|
(C++11)
(removed in C++23)
|
声明对象可被回收
(函数模板) |
|
(C++11)
(removed in C++23)
|
声明内存区域不包含可追踪指针
(函数) |
|
(C++11)
(removed in C++23)
|
取消
std::declare_no_pointers
的效果
(函数) |
|
(C++11)
(removed in C++23)
|
列出指针安全模型
(枚举) |
|
(C++11)
(removed in C++23)
|
返回当前指针安全模型
(函数) |