动态内存管理

来自cppreference.com
< cpp
 
 
工具库
语言支持
类型支持(基本类型、 RTTI 、类型特征)    
库功能特性测试宏 (C++20)
动态内存管理
程序工具
错误处理
协程支持 (C++20)
变参数函数
(C++17)
三路比较 (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
通用工具
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)

初等字符串转换
(C++17)
(C++17)
栈踪
 
动态内存管理
智能指针
(C++11)
(C++11)
(C++11)
(C++17 前)
(C++11)
(C++23)
分配器
内存资源
未初始化存储
未初始化内存算法
受约束的未初始化内存算法
垃圾收集支持
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
杂项
(C++20)
(C++11)
(C++11)
C 库
低层内存管理
 

智能指针

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

定义于头文件 <memory>
指针类别
拥有独有对象所有权语义的智能指针
(类模板)
拥有共享对象所有权语义的智能指针
(类模板)
(C++11)
std::shared_ptr 所管理对象的弱引用
(类模板)
(C++17 中移除)
拥有严格对象所有权语义的智能指针
(类模板)
辅助类
提供基于所有者的,共享指针和弱指针的混合类型的排序
(类模板)
允许对象创建指代自身的 shared_ptr
(类模板)
访问指向已销毁对象的 weak_ptr 时抛出的异常
(类)
unique_ptr 的默认删除器
(类模板)
智能指针适配器
(C++23)
与外来指针设置器交互,并在析构时重设智能指针
(类模板)
(C++23)
以关联的智能指针和重设参数创建 out_ptr_t
(函数模板)
与外来指针设置器交互,从智能指针获得初始指针值,并在析构时重设它
(类模板)
(C++23)
以关联的智能指针和重设参数创建 inout_ptr_t
(函数模板)

分配器

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

定义于头文件 <memory>
默认的分配器
(类模板)
提供关于分配器类型的信息
(类模板)
记录由 allocate_at_least 分配的存储的地址与实际大小
(类模板)
经由分配器分配至少与请求的大小一样大的存储
(函数模板)
标签类型,用于选择具分配器的构造函数重载
(类)
用于选择具分配器的构造函数的 std::allocator_arg_t 对象
(常量)
检查指定的类型是否支持使用分配器的构造
(类模板)
准备匹配给定类型所要求的使用分配器构造的口味的参数列表
(函数模板)
以使用分配器构造的手段创建给类型的对象
(函数模板)
以使用分配器构造的手段在指定的内存位置创建给定类型的对象
(函数模板)
定义于头文件 <scoped_allocator>
为多级容器实现的多级分配器
(类模板)
定义于头文件 <memory_resource>
定义于命名空间 std::pmr
std::memory_resource 构造,支持基于它的运行时多态的分配器
(类模板)

内存资源

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

定义于头文件 <memory_resource>
定义于命名空间 std::pmr
一个抽象接口,用于各种封装内存资源的类
(类)
返回一个静态的程序范围 std::pmr::memory_resource,它使用全局 operator newoperator delete 分配和解分配内存
(函数)
返回一个不进行任何分配的静态 std::pmr::memory_resource
(函数)
获取缺省 std::pmr::memory_resource
(函数)
设置缺省 std::pmr::memory_resource
(函数)
一组池资源的构造函数选项
(类)
线程安全的 std::pmr::memory_resource,用于管理具有不同块大小的池中的分配
(类)
线程不安全的 std::pmr::memory_resource,用于管理具有不同块大小的池中的分配
(类)
一种特殊用途的 std::pmr::memory_resource,仅在资源被销毁时才释放所分配内存
(类)

未初始化存储

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

定义于头文件 <memory>
(C++17 中弃用)(C++20 中移除)
允许标准算法存储结果于未初始化内存的迭代器
(类模板)
(C++17 中弃用)(C++20 中移除)
获得未初始化存储
(函数模板)
(C++17 中弃用)(C++20 中移除)
释放未初始化存储
(函数模板)

未初始化内存算法

定义于头文件 <memory>
将范围内的对象复制到未初始化的内存区域
(函数模板)
将指定数量的对象复制到未初始化的内存区域
(函数模板)
复制一个对象到以范围定义的未初始化内存区域
(函数模板)
复制一个对象到以起点和计数定义的未初始化内存区域
(函数模板)
移动一个范围的对象到未初始化的内存区域
(函数模板)
移动一定数量对象到未初始化内存区域
(函数模板)
在范围所定义的未初始化的内存区域以默认初始化构造对象
(函数模板)
在起始和计数所定义的未初始化内存区域用默认初始化构造对象
(函数模板)
在范围所定义的未初始化内存中用值初始化构造对象
(函数模板)
在起始和计数所定义的未初始化内存区域以值初始化构造对象
(函数模板)
销毁在给定地址的对象
(函数模板)
(C++17)
销毁一个范围中的对象
(函数模板)
(C++17)
销毁范围中一定数量的对象
(函数模板)
在给定地址创建对象
(函数模板)

受约束的未初始化内存算法 (C++20)

C++20 提供受约束的未初始化内存算法,它们接受范围参数或迭代器-哨位对。

定义于头文件 <memory>
定义于命名空间 std::ranges
指定迭代器、哨位和范围上的某些操作不抛出
(仅用于阐释的概念)
复制元素范围到未初始化的内存区域
(niebloid)
复制一定量元素到未初始化的内存区域
(niebloid)
复制一个对象到范围所定义的未初始化的内存区域
(niebloid)
复制一个对象到起始与计数所定义的未初始化的内存区域
(niebloid)
移动对象范围到未初始化的内存区域
(niebloid)
移动一定量对象到未初始化的内存区域
(niebloid)
在范围所定义的未初始化的内存区域以默认初始化构造对象
(niebloid)
在起始与计数所定义的未初始化的内存区域以默认初始化构造对象
(niebloid)
在范围所定义的未初始化的内存区域以值初始化构造对象
(niebloid)
在起始与计数所定义的未初始化的内存区域以值初始化构造对象
(niebloid)
销毁位于给定地址的元素
(niebloid)
销毁范围中的元素
(niebloid)
销毁范围中一定量的元素
(niebloid)
在给定地址创建对象
(niebloid)

垃圾收集器支持

定义于头文件 <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 中移除)
返回当前的指针安全模式
(函数)

杂项

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

C 风格内存管理

包含如 std::mallocstd::free

低层内存管理

包含如 operator newoperator deletestd::set_new_handler