内存管理库

来自cppreference.com
< cpp


 
 
内存管理库
(仅用于阐述*)
分配器
未初始化内存算法
受约束的未初始化内存算法
内存资源
未初始化存储(C++20 前)
(C++17 弃用)
(C++17 弃用)
垃圾收集器支持(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++11 起)

智能指针提供自动、异常安全的对象生存期管理。

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

[编辑]分配器

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

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

[编辑]内存资源 (C++17 起)

内存资源实现可为 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++17)
销毁范围中的对象
(函数模板)[编辑]
(C++17)
销毁范围中若干对象
(函数模板)[编辑]
在给定地址创建对象
(函数模板)[编辑]

[编辑]受约束的未初始化内存算法 (C++20 起)

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

在标头 <memory> 定义
在命名空间 std::ranges 定义
指定迭代器、哨位和范围上的某些操作不抛出
(仅用于阐述的概念*)
复制范围中对象到未初始化内存
(算法函数对象)[编辑]
复制若干对象到未初始化内存
(算法函数对象)[编辑]
复制一个对象到范围所定义的未初始化内存
(算法函数对象)[编辑]
复制一个对象到起点和数量所定义的未初始化内存
(算法函数对象)[编辑]
移动范围中对象到未初始化内存
(算法函数对象)[编辑]
移动若干对象到未初始化内存
(算法函数对象)[编辑]
在范围所定义的未初始化内存中用默认初始化构造对象
(算法函数对象)[编辑]
在起点和数量所定义的未初始化内存中用默认初始化构造对象
(算法函数对象)[编辑]
在范围所定义的未初始化内存中用值初始化构造对象
(算法函数对象)[编辑]
在起点和数量所定义的未初始化内存中用值初始化构造对象
(算法函数对象)[编辑]
销毁给定地址的对象
(算法函数对象)[编辑]
销毁范围中的对象
(算法函数对象)[编辑]
销毁范围中若干对象
(算法函数对象)[编辑]
在给定地址创建对象
(算法函数对象)[编辑]

[编辑]显式生存期管理 (C++23 起)

在标头 <memory> 定义
在给定的存储上创建对象并复用对象表示
(函数模板)[编辑]

[编辑]用于复合类设计的类型 (C++26 起)

在标头 <memory> 定义
(C++26)
包含动态分配对象的具有类似值语义的包装器
(类模板)[编辑]
包含动态分配对象的带有类似值语义的多态包装器
(类模板)[编辑]

[编辑]杂项

在标头 <memory> 定义
提供关于指针式类型的信息
(类模板)[编辑]
(C++20)
从指针式类型获得裸指针
(函数模板)[编辑]
(C++11)
获得对象的实际地址,即使其重载了 & 运算符
(函数模板)[编辑]
(C++11)
对齐缓冲区中的指针
(函数)[编辑]
告知编译器指针已对齐
(函数模板)[编辑]
检查指针是否指向至少具有给定对齐值的对象
(函数模板)[编辑]

[编辑]底层内存管理

包含如 operator newoperator deletestd::set_new_handler

在标头 <new> 定义

[编辑]C 风格内存管理

包含如 std::mallocstd::free

在标头 <cstdlib> 定义

[编辑]未初始化存储 (C++20 前)

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

在标头 <memory> 定义
(C++17 弃用)(C++20 移除)
允许标准算法存储结果于未初始化内存的迭代器
(类模板)[编辑]
(C++17 弃用)(C++20 移除)
获得未初始化存储
(函数模板)[编辑]
(C++17 弃用)(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 移除)
返回当前的指针安全模式
(函数)[编辑]
close