内存管理库
来自 cppreference.cn
< cpp
目录 |
[编辑] 智能指针 (自 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) |
检查指定的类型是否支持 uses-allocator 构造 (类模板) |
准备与给定类型所需的 uses-allocator 构造风格匹配的参数列表 (函数模板) | |
(C++20) |
通过 uses-allocator 构造创建给定类型的对象 (函数模板) |
通过 uses-allocator 构造在指定的内存位置创建给定类型的对象 (函数模板) | |
定义于头文件
<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,它仅在资源被销毁时释放已分配的内存 (类) |
[编辑] 未初始化存储 (直到 C++17)
提供了几个实用工具来创建和访问原始存储。
定义于头文件
<memory> | |
(C++17 中已弃用)(C++20 中已移除) |
一个迭代器,允许标准算法将结果存储在未初始化的内存中 (类模板) |
(C++17 中已弃用)(C++20 中已移除) |
获取未初始化存储 (函数模板) |
(C++17 中已弃用)(C++20 中已移除) |
释放未初始化存储 (函数模板) |
[编辑] 未初始化内存算法
定义于头文件
<memory> | |
将对象范围复制到未初始化的内存区域 (函数模板) | |
(C++11) |
将多个对象复制到未初始化的内存区域 (函数模板) |
将一个对象复制到未初始化的内存区域,由范围定义 (函数模板) | |
将一个对象复制到未初始化的内存区域,由起始位置和计数定义 (函数模板) | |
(C++17) |
将对象范围移动到未初始化的内存区域 (函数模板) |
(C++17) |
将多个对象移动到未初始化的内存区域 (函数模板) |
通过默认初始化在未初始化的内存区域中构造对象,由范围定义 (函数模板) | |
通过默认初始化在未初始化的内存区域中构造对象,由起始位置和计数定义 (函数模板) | |
通过值初始化在未初始化的内存区域中构造对象,由范围定义 (函数模板) | |
通过值初始化在未初始化的内存区域中构造对象,由起始位置和计数定义 (函数模板) | |
(C++17) |
销毁给定地址的对象 (函数模板) |
(C++17) |
销毁对象范围 (函数模板) |
(C++17) |
销毁范围内的多个对象 (函数模板) |
(C++20) |
在给定地址创建对象 (函数模板) |
[编辑] 受约束的未初始化内存算法 (自 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++11)(C++23 中已移除) |
声明对象不可回收 (函数) |
(C++11)(C++23 中已移除) |
声明对象可以回收 (函数模板) |
(C++11)(C++23 中已移除) |
声明内存区域不包含可追踪的指针 (函数) |
(C++11)(C++23 中已移除) |
取消 std::declare_no_pointers 的效果 (函数) |
(C++11)(C++23 中已移除) |
列出指针安全模型 (枚举) |
(C++11)(C++23 中已移除) |
返回当前指针安全模型 (函数) |
[编辑] 显式生命周期管理 (自 C++23 起)
定义于头文件
<memory> | |
在给定的存储中隐式创建对象,并重用对象表示 (函数模板) |
[编辑] 杂项
定义于头文件
<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> 中定义 |