动态内存管理

目录

智能指针

智能指针使得自动、异常安全的对象生存期管理可行。

定义于头文件 <memory>
指针类别
(C++11)
拥有独有对象所有权语义的智能指针
(类模板)
(C++11)
拥有共享对象所有权语义的智能指针
(类模板)
(C++11)
std::shared_ptr所管理的对象的弱引用
(类模板)
(C++17 前)
拥有严格对象所有权语义的智能指针
(类模板)
帮助类
(C++11)
提供基于占有者的,混合类型的共享指针和弱指针排序
(类模板)
允许一个对象来创建一个指代本身的shared_ptr
(类模板)
(C++11)
访问指向已销毁对象的weak_ptr时抛出的异常
(类)
unique_ptr默认的删除器
(类模板)

分配器

分配器是封装内存分配策略的类模板。这允许泛型容器从数据自身将内存管理解耦合。

定义于头文件 <memory>
默认的分配器
(类模板)
提供关于分配器类型的信息
(类模板)
标签类型,用于选择分配器感知的构造函数重载
(类)
用于选择具分配器的构造函数的 std::allocator_arg_t 对象
(常量)
检查指定的类型是否支持使用分配器的构造
(类模板)
定义于头文件 <scoped_allocator>
为多级容器实现的多级分配器
(类模板)
定义于头文件 <memory_resource>
定义于命名空间 pmr
std::memory_resource 构造,支持基于它的运行时多态的分配器
(类模板)

内存资源

内存资源实现可为 std::pmr::polymorphic_allocator 所用的内存分配策略

定义于头文件 <memory_resource>
定义于命名空间 pmr
封装内存资源的类的抽象接口
(类)
返回静态的程序范围 std::pmr::memory_resource ,它使用全局 operator newoperator delete 分配和解分配内存
(函数)
返回不进行分配的静态 std::pmr::memory_resource
(函数)
获取默认 std::pmr::memory_resource
(函数)
设置默认的 std::pmr::memory_resource
(函数)
(C++17)
池资源的构造函数选项集合
(类)
线程安全的 std::pmr::memory_resource ,用于管理不同块大小的池中的分配
(类)
线程不安全的 std::pmr::memory_resource ,用于管理不同块大小的池中的分配
(类)
仅在销毁资源时释放所分配内存的特殊目的 std::pmr::memory_resource
(类)

未初始化存储

提供数个工具以创建并访问未初始化存储

定义于头文件 <memory>
将范围内的对象复制到未初始化的内存区域
(函数模板)
将指定数量的对象复制到未初始化的内存区域
(函数模板)
复制一个对象到以范围定义的未初始化内存区域
(函数模板)
复制一个对象到以起点和计数定义的未初始化内存区域
(函数模板)
移动一个范围的对象到未初始化的内存区域
(函数模板)
移动一定数量对象到未初始化内存区域
(函数模板)
在范围所定义的未初始化的内存区域以默认初始化构造对象
(函数模板)
在起始和计数所定义的未初始化内存区域用默认初始化构造对象
(函数模板)
在范围所定义的未初始化内存中用值初始化构造对象
(函数模板)
在起始和计数所定义的未初始化内存区域以值初始化构造对象
(函数模板)
(C++17)
销毁在给定地址的对象
(函数模板)
(C++17)
销毁一个范围中的对象
(函数模板)
(C++17)
销毁范围中一定数量的对象
(函数模板)
(C++17 中弃用)
允许标准算法存储结果于未初始化内存的迭代器
(类模板)
(C++17 中弃用)
获得未初始化存储
(函数模板)
(C++17 中弃用)
释放未初始化存储
(函数模板)

垃圾收集器支持

定义于头文件 <memory>
声明一个对象不能被回收
(函数)
声明一个对象可以被回收
(函数模板)
声明该内存区域不含可追踪指针
(函数)
取消 std::declare_no_pointers 的效果
(函数)
列出指针安全模式
(类)
返回当前的指针安全模式
(函数)

杂项

定义于头文件 <memory>
提供关于类指针类型的信息
(类模板)
(C++20)
从仿指针类型获得裸指针
(函数模板)
(C++11)
获得对象的实际地址,即使重载了 & 运算符
(函数模板)
(C++11)
对齐缓冲区中的指针
(函数)

C 风格内存管理

包含例如 std::mallocstd::free

低层内存管理

包含例如 operator newoperator deletestd::set_new_handler

版本历史

  • (当前 | 先前 2017年11月14日 (二) 08:22Fruderica讨论 | 贡献 . . (3,717字节) (+40). . (p0653r2) (撤销)
  • 当前 | 先前 2017年6月3日 (六) 06:54Fruderica讨论 | 贡献. . (3,677字节) (+1,091). . (撤销)
  • 当前 | 先前 2016年3月17日 (四) 23:46P12讨论 | 贡献. . (2,586字节) (-606). . (rm orig english text) (撤销)
  • 当前 | 先前 2016年2月4日 (四) 22:37Wizardforcel讨论 | 贡献. . (3,192字节) (+1). . (撤销)
  • 当前 | 先前 2016年2月1日 (一) 16:09Wizardforcel讨论 | 贡献. . (3,191字节) (+2). . (撤销)
  • 当前 | 先前 2013年7月9日 (二) 02:08P12bot讨论 | 贡献 . . (3,189字节) (+6). . (Allow search engines to index popular pages.) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 09:00P12bot讨论 | 贡献 . . (3,183字节) (-534). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 17:20P12bot讨论 | 贡献 . . (3,717字节) (+145). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月27日 (六) 03:24P12讨论 | 贡献 . . (3,572字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 06:00TranslationBot讨论 | 贡献. . (3,572字节) (-81). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月25日 (四) 14:08P12讨论 | 贡献 . . (3,653字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 12:00TranslationBot讨论 | 贡献. . (3,653字节) (+3,653). . (Translated from the English version using Google Translate)