c++ memory 头文件详细介绍

指针特征

pointer_traits

(C++11)

提供关于指针式类型的信息
(类模板)

垃圾收集器支持

pointer_safety

(C++11)

列出指针安全模式
(枚举)

分配器

allocator

默认的分配器
(类模板)

allocator_traits

(C++11)

提供关于分配器类型的信息
(类模板)

allocator_arg_t

(C++11)

标签类型,用于选择具分配器的构造函数重载
(类)

allocator_arg

(C++11)

用于选择具分配器的构造函数的 std::allocator_arg_t 对象
(常量)

uses_allocator

(C++11)

检查指定的类型是否支持使用分配器的构造
(类模板)

未初始化存储

raw_storage_iterator

(C++17 中弃用)(C++20 中移除)

允许标准算法存储结果于未初始化内存的迭代器
(类模板)

智能指针

unique_ptr

(C++11)

拥有独有对象所有权语义的智能指针
(类模板)

shared_ptr

(C++11)

拥有共享对象所有权语义的智能指针
(类模板)

weak_ptr

(C++11)

到 std::shared_ptr 所管理对象的弱引用
(类模板)

auto_ptr

(C++17 中移除)

拥有严格对象所有权语义的智能指针
(类模板)

辅助类

std::atomic<std::shared_ptr>

(C++20)

原子共享指针
(类模板特化)

std::atomic<std::weak_ptr>

(C++20)

原子弱指针
(类模板特化)

owner_less

(C++11)

提供基于所有者的,共享指针和弱指针的混合类型的排序
(类模板)

enable_shared_from_this

(C++11)

允许对象创建指代自身的 shared_ptr
(类模板)

bad_weak_ptr

(C++11)

访问指向已销毁对象的 weak_ptr 时抛出的异常
(类)

default_delete

(C++11)

unique_ptr 的默认删除器
(类模板)

std::hash<std::unique_ptr>

(C++11)

std::unique_ptr 的散列支持
(类模板特化)

std::hash<std::shared_ptr>

(C++11)

std::shared_ptr 的散列支持
(类模板特化)

函数

杂项

to_address

(C++20)

从指针式类型获得裸指针
(函数模板)

addressof

(C++11)

获得对象的实际地址,即使其重载了 & 运算符
(函数模板)

align

(C++11)

对齐缓冲区中的指针
(函数)

assume_aligned

(C++20)

告知编译器指针已对齐
(函数模板)

垃圾收集器支持

declare_reachable

(C++11)

声明一个对象不能被回收
(函数)

undeclare_reachable

(C++11)

声明一个对象可以被回收
(函数模板)

declare_no_pointers

(C++11)

声明该内存区域不含可追踪指针
(函数)

undeclare_no_pointers

(C++11)

取消 std::declare_no_pointers 的效果
(函数)

get_pointer_safety

(C++11)

返回当前的指针安全模式
(函数)

未初始化存储

uninitialized_copy

将范围内的对象复制到未初始化的内存区域
(函数模板)

uninitialized_copy_n

(C++11)

将指定数量的对象复制到未初始化的内存区域
(函数模板)

uninitialized_fill

复制一个对象到以范围定义的未初始化内存区域
(函数模板)

uninitialized_fill_n

复制一个对象到以起点和计数定义的未初始化内存区域
(函数模板)

uninitialized_move

(C++17)

移动一个范围的对象到未初始化的内存区域
(函数模板)

uninitialized_move_n

(C++17)

移动一定数量对象到未初始化内存区域
(函数模板)

uninitialized_default_construct

(C++17)

在范围所定义的未初始化的内存区域以默认初始化构造对象
(函数模板)

uninitialized_default_construct_n

(C++17)

在起始和计数所定义的未初始化内存区域用默认初始化构造对象
(函数模板)

uninitialized_value_construct

(C++17)

在范围所定义的未初始化内存中用值初始化构造对象
(函数模板)

uninitialized_value_construct_n

(C++17)

在起始和计数所定义的未初始化内存区域以值初始化构造对象
(函数模板)

destroy_at

(C++17)

销毁在给定地址的对象
(函数模板)

destroy

(C++17)

销毁一个范围中的对象
(函数模板)

destroy_n

(C++17)

销毁范围中一定数量的对象
(函数模板)

get_temporary_buffer

(C++17 中弃用)(C++20 中移除)

获得未初始化存储
(函数模板)

return_temporary_buffer

(C++17 中弃用)(C++20 中移除)

释放未初始化存储
(函数模板)

智能指针非成员操作

make_uniquemake_unique_for_overwrite

(C++14)(C++20)

创建管理一个新对象的独占指针
(函数模板)

operator==operator!=operator<operator<=operator>operator>=operator<=>

(C++20 中移除)(C++20)

与另一个 unique_ptr 或 nullptr 进行比较
(函数模板)

make_sharedmake_shared_for_overwrite

(C++20)

创建管理一个新对象的共享指针
(函数模板)

allocate_sharedallocate_shared_for_overwrite

(C++20)

创建管理一个用分配器分配的新对象的共享指针
(函数模板)

static_pointer_castdynamic_pointer_castconst_pointer_castreinterpret_pointer_cast

(C++17)

应用 static_cast、dynamic_cast、const_cast 或 reinterpret_cast 到被存储指针
(函数模板)

get_deleter

返回指定类型中的删除器,若其拥有
(函数模板)

operator==operator!=operator<operator<=operator>operator>=operator<=>

(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20)

与另一个 shared_ptr 或 nullptr 进行比较
(函数模板)

operator<<

将存储的指针的值输出到输出流
(函数模板)

std::swap(std::unique_ptr)

(C++11)

特化 std::swap 算法
(函数模板)

std::swap(std::weak_ptr)

(C++11)

特化 std::swap 算法
(函数模板)

std::swap(std::shared_ptr)

(C++11)

特化 std::swap 算法
(函数模板)

Niebloid

定义于命名空间 std::ranges

未初始化存储

ranges::uninitialized_copy

(C++20)

复制元素范围到未初始化的内存区域
(niebloid)

ranges::uninitialized_copy_n

(C++20)

复制一定量元素到未初始化的内存区域
(niebloid)

ranges::uninitialized_fill

(C++20)

复制一个对象到范围所定义的未初始化的内存区域
(niebloid)

ranges::uninitialized_fill_n

(C++20)

复制一个对象到起始与计数所定义的未初始化的内存区域
(niebloid)

ranges::uninitialized_move

(C++20)

移动对象范围到未初始化的内存区域
(niebloid)

ranges::uninitialized_move_n

(C++20)

移动一定量对象到未初始化的内存区域
(niebloid)

ranges::uninitialized_default_construct

(C++20)

在范围所定义的未初始化的内存区域以默认初始化构造对象
(niebloid)

ranges::uninitialized_default_construct_n

(C++20)

在起始与计数所定义的未初始化的内存区域以默认初始化构造对象
(niebloid)

ranges::uninitialized_value_construct

(C++20)

在范围所定义的未初始化的内存区域以值初始化构造对象
(niebloid)

ranges::uninitialized_value_construct_n

(C++20)

在起始与计数所定义的未初始化的内存区域以值初始化构造对象
(niebloid)

ranges::destroy_at

(C++20)

销毁位于给定地址的元素
(niebloid)

ranges::destroy

(C++20)

销毁范围中的元素
(niebloid)

ranges::destroy_n

(C++20)

销毁范围中一定量的元素
(niebloid)

参考链接

  • https://zh.cppreference.com/w/cpp/header/memory

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ using的三种使用策略以及具体的用法

Using的使用方法 1&#xff0c;命名空间的使用 为了防止代码冲突&#xff0c;都会使用到命名空间。假设这样一种情况&#xff0c;当一个班上有两个名叫 Zara 的学生时&#xff0c;为了明确区分他们&#xff0c;我们在使用名字之外&#xff0c;不得不使用一些额外的信息&#…

Android设计模式之——迭代器模式

一、介绍 迭代器模式&#xff08;Iterator Pattern&#xff09;又称为游标&#xff08;Cursor&#xff09;模式&#xff0c;是行为型设计模式之一。迭代器模式算是一个比较古老的设计模式&#xff0c;其源于对容器的访问&#xff0c;比如Java中的List、Map、数组等&#xff0c…

Android设计模式之——模板方法模式

一、介绍 在面向对象开发过程中&#xff0c;通常会遇到这样的一个问题&#xff0c;我们知道一个算法所需的关键步骤&#xff0c;并确定了这些步骤的执行顺序&#xff0c;但是&#xff0c;某些步骤的具体实现是未知的&#xff0c;或者说某些步骤的实现是会随着环境的变化而改变…

Android设计模式之——访问者模式

一、介绍 访问者模式是一种将数据操作与数据结构分离的设计模式&#xff0c;它是《设计模式》中23种设计模式中最复杂的一个&#xff0c;但它的使用频率并不高&#xff0c;正如《设计模式》的作者GOF对访问者模式的描述&#xff1a;大多数情况下&#xff0c;你不需要使用访问者…

C++类模板template <class T>简单使用方法

一个简单的例子 两个数比大小 如果两个数都是int类型 class Compare_int { public :Compare(int a,int b){xa;yb;}int max( ){return (x>y)?x:y;}int min( ){return (x<y)?x:y;} private :int x,y; }; 如果两个数是float类型 class Compare_float { public :Compare(…

Android设计模式之——中介者模式

一、介绍 中介者模式&#xff08;Mediator Pattern&#xff09;也称为调解者模式或调停者模式&#xff0c;Mediator本身就有调停者和调解者的意思。 在日常生活中调停者或调解者这个角色我们见得比较多的是“和事老”&#xff0c;也就是说调解两个有争端的人的角色&#xff0…

C++智能指针中unique_ptr部分内容的讲解

参考链接 std::unique_ptr 介绍 定义位于头文件<memory>std::unique_ptr 是通过指针占有并管理另一对象&#xff0c;并在 unique_ptr 离开作用域时释放该对象的智能指针。 在下列两者之一发生时用关联的删除器释放对象&#xff1a;1&#xff0c;销毁了管理的 unique_pt…

Java基础——Java多线程中sleep()、wait()和notify()

一、sleep()sleep()方法源码&#xff1a;/** * Causes the currently executing thread to sleep (temporarily cease * execution) for the specified number of milliseconds, subject to * the precision and accuracy of system timers and schedulers. The thread * does …

Key_handle的学习

代码 一切尽在不言中 #pragma once#include "common/common.h" #include "sdf/sdf.h"#include <memory>namespace sdf {namespace algorithm {class KeyHandle {public:using erased_internal_data_t char; //使用erased_internal_data_t等效于ch…

Java基础——虚拟机结构

一、Java平台结构图二、JVM、JRE和JDK关系JVM&#xff1a;Java Virtual Machine&#xff08;Java虚拟机&#xff09;&#xff0c;负责执行符合规范的Class文件 JRE&#xff1a; Java Runtime Environment &#xff08;java运行环境&#xff09;&#xff0c;包含JVM和类库 JDK&a…

解决 SSH Connection closed by foreign host 问题

用 Xshell 连接服务器总是报错 : Connection closed by foreign host.Disconnected from remote host... 原因可能是 SSH 服务器没设置保活时间间隔 , 具体设置如下 : 操作 # vim /etc/ssh/sshd_config 添加两行 , 或去掉注释 : ClientAliveInterval 60ClientAliveCountMax…

Java基础——synchronized

synchronized重要&#xff01;重要&#xff01;重要&#xff01;重要的事情说三遍&#xff0c;一定要记下来哦。 Java语言的关键字&#xff0c;当它用来修饰一个方法或者一个代码块的时候&#xff0c;能够保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同…

C++:MAC安装Boost库文件并且使用CLion开发

boost的filestem库 C在17版本的标准库中引入了一个filesystem库&#xff0c;用来处理文件路径&#xff0c;以及文件访问。很多编译器对filesystem库的支持还不是很好。为了解决这个问题&#xff0c;可以临时使用boost::filesystem来替代。其实C17标准中的filesystem库就是从bo…

Java基础——Java异常处理机制

一、引言 try…catch…finally恐怕是大家再熟悉不过的语句了&#xff0c;而且感觉用起来也是很简单&#xff0c;逻辑上似乎也是很容易理解。不过&#xff0c;我亲自体验的“教训”告诉我&#xff0c;这个东西可不是想象中的那么简单、听话。不信&#xff1f;那你看看下面的代码…

clion在使用sqlite3的时候,显示Undefined symbols for architecture x86_64错误的解决办法

显示Undefined symbols for architecture x86_64错误的原因 1、缺少静态库 环境&#xff1a;在模拟器上报错但在真机上能运行成功&#xff0c;而且报的错误来自于第三方库。原因&#xff1a;architecture x86_64 是指模拟器的架构&#xff0c;意思就是 Crypto 变量在模拟器架…

Java基础——Java反射机制及IoC原理

一、概念 主要是指程序可以访问&#xff0c;检测和修改它本身状态或行为的一种能力&#xff0c;并能根据自身行为的状态和结果&#xff0c;调整或修改应用所描述行为的状态和相关的语义。在java中&#xff0c;只要给定类的名字&#xff0c; 那么就可以通过反射机制来获得类的所…

Ubuntu boost库文件安装编译

简单介绍 Boost库是为C语言标准库提供扩展的一些C程序库的总称&#xff0c;由Boost社区组织开发、维护.Boost向来有准标准库之称&#xff0c;很多新特性例如智能指针等都是先在boost中实现&#xff0c;后来被吸收到标准库之中. Boost实现了日志、算法、日期、地理、数学、线程…

Java基础——类加载机制及原理

一、什么是类的加载&#xff1f; 类的加载指的是将类的.class文件中的二进制数据读入到内存中&#xff0c;将其放在运行时数据区的方法区内&#xff0c;然后在堆区创建一个java.lang.Class对象&#xff0c;用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Cl…

在Ubuntu环境下使用vcpkg安装sqlite_orm包文件

Ubuntu安装vcpkg 从github下载vcpkg的安装包&#xff0c;在usr/local路径下面执行如下命令 git clone https://github.com/Microsoft/vcpkg.git cd vcpkg //进入源码目录 ./bootstrap-vcpkg.sh //执行./bootstrap-vcpkg.sh进行编译安装&#xff0c;这个过程很慢 编译安装好…

finally语句与return语句的执行顺序

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行&#xff1f;很多人都说不是&#xff0c;当然他们的回答是正确的&#xff0c;经过我试验&#xff0c;至少有两种情况下finally语句是不会被执行的&#xff1a; try语句没有被执行到…