c++知识系列:new、operator new、placement new

2023-10-27

总结:

operator new

    三种形式(http://www.cplusplus.com/reference/new/operator%20new/

    throwing (1)    
        void* operator new (std::size_t size) throw (std::bad_alloc);
    nothrow (2) 
        void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) throw();
    placement (3)   
        void* operator new (std::size_t size, void* ptr) throw();

placement new

    placement new是重载operator new的一个标准、全局的版本,通常很少用到它。

    placement new 原型void *operator new( size_t, void *p ) throw() { return p; }

    operator new就像operator+一样,是可以重载的,但是不能在全局对原型为void operator new(size_t size)这个原型进行重载,一般只能在类中进行重载。

    placement new**允许你在一个已经分配好的内存中(栈或堆中)构造一个新的对象

 

operator new重载的作用:

    运用于调试,例如#define new new(__FILE__, __LINE__),这样我们可以输出文件名和行号

    内存池优化,一次性分配一块大的内存作为内存池,重复利用该内存。

    STL中的new,它将对象的空间分配和构造分离开来,给STL容器提供了更加灵活的接口

参考:

    C++ 内存分配(new,operator new)详解

    [C++]内存管理器--谈论如何自定义内存分配机制

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++知识系列:new、operator new、placement new 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多

随机推荐

  • 块坐标下降法(Block Coodinate Descent)

    问题的描述 给定一个可微的凸函数 如果在某一点x 使得f x 在每一个坐标轴上都是最小值 那么f x 是不是一个全局的最小值 形式化的描述为 是不是对于所有的d i都有 这里的代表第i个标准基向量 答案为成立 这是因为 但是问题来了 如果对
  • mysql备份表的两种方法(数据迁移)

    mysql备份的两种方法 传输方式 单表传输 在数据量小的情况下一般采用insert的方法向备份表中插入数据 当源表的数据量过大时使用表空间的方式进行数据的迁移 第一种方法 针对表中数据量小的情况 1 使用源表的表结构建新的备份表 源表为t
  • 从Eclipse官网查找自己要的插件地址 来安装

    有时候 eclipse自带的应用市场 安装插件老是失败 此时可以试试官网的插件地址 进入eclipse官网 https www eclipse org 选择如图 Marketplace 输入你要查询的插件 点击下载图标 选择你对应的ecli
  • 用户扫描普通二维码进入小程序指定页面详细步骤

    用户扫描普通二维码进入小程序指定页面详细步骤 一 进入微信公众平台小程序开发管理 开发设置 扫普通链接二维码打开小程序 启用 二 添加规则 我这里二维码规则为前台项目地址 可自行修改 下载的校验文件放在了项目里面 根据要求需要放在该服务器域
  • CCleaner如何阻止Internet服务提供商获取您的数据

    要阻止ISP获取您的数据 您需要使用VPN服务 或虚拟隧道提供程序Tor来屏蔽所有浏览行为 要阻止广告客户跟踪广告 您需要在每次浏览完成后清理Cookie CCleaner http www ccleaner cc 会自动执行此操作 CCl
  • c++ primer plus第六版复习题及答案

    第九章 1 对于下面的情况 应该使用哪种存储方案 a homer 是函数的形参 答 homer将自动成为自动变量 b secret 变量由两个文件共享 答 应该在一个文件中将secret变量定义为外部变量 并在第二个文件中使用extern声
  • 如何用python编辑 题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    如何用python编辑 题目 有1 2 3 4个数字 能组成多少个互不相同且无重复数字的三位数 都是多少 如何用python编辑 题目 有1 2 3 4个数字 能组成多少个互不相同且无重复数字的三位数 都是多少 题目分析 四个数字组成三位数
  • python模拟报数游戏

    题目 编写程序 模拟报数游戏 有n个人围成一圈 顺序编号 从第一个人开始从1到k 假设k 3 报数 报到k的人退出圈子 然后圈子缩小 从下一个人继续游戏 问最后留下的是原来的第几号 思路 初步实现功能 使用集合输出剩下的数字 而未考虑是第几
  • 性能测试、负载测试、压力测试-之间的差异

    性能测试 负载测试 压力测试 之间的差异 目录 1 什么是性能测试 2 什么是负载测试 3 什么是压力测试 4 性能测试 vs 负载测试 vs 压力测试 5 为什么要进行性能测试 6 为什么要进行负载测试 7 为什么要进行压力测试 8 什么
  • Streamlit 讲解专栏(六):展示文本魔力

    文章目录 1 前言 2 st markdown 引入丰富的Markdown文本 3 st title 引入引人注目的大标题 4 st header 引入简洁的小标题 5 st subheader 添加次级标题 6 st caption 添加
  • zookeeper的安装配置(详细步骤)

    配置前准备 将apache zookeeper 3 7 0 bin tar gz安装包上传到xshell 在xshell上解压缩包 输入解压命令 cd zookeeper tar zxvf apache zookeeper 3 7 0 bi
  • 【大前端】NestedScrollView/ScrollView 加载完自动滑动至底部导致内容上滑问题解决

    正常情况下 由于NestedScrollView ScrollView 嵌套RecyclerView 可能会导致Recyclerview占据焦点导致整个NestedScrollView ScrollView内容上滑 此问题的解决方案如下 1
  • 在MFC中使用OpenCV2.3.1

    最近要做数字图像处理的项目 大家都说VS MFC OpenCV很好用 于是我就试着弄了下 首先我到OpenCV ChinaOpenCV中文版主页找了一些很不错的教程开始做了 我用的是Visual Studio 2005 OpenCV的版本是
  • 憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台

    憨批的语义分割重制版11 Keras 搭建自己的HRNetV2语义分割平台 学习前言 什么是HRNetV2模型 代码下载 HRNetV2实现思路 一 预测部分 1 主干网络介绍 a Section 1 b Section 2 c Secti
  • SpringBoot返回Json数据

    Spring Boot 返回 Json 数据 XML 文件的解析常见的解析工具有 DOM4j JDOM 等 为了标准化 XML 文件解析 Java 中提出了 JAXP 规范 使用的解析模型有 DOM 将标记语言文档一次性加载进入内存中 在内
  • 第九课: 工作空间-Work Space介绍

    2 7 工作空间 Work Space介绍 工作空间是WorkBench3 3集成开发环境对项目工程进行集中管理的空间 用户创建的BootRom工程 VxWorks工程 Downloadable工程和静态库工程等都存在于Work Space
  • 微信小程序使用crypto.js加密解密

    微信小程序中使用crypto js crypto js是用来进行AES加密的 注意AES在使用时有7个配置项 前后端加解密记着统一参数 测试时注意配置项的选择是否一致 测试工具 AES加密测试工具 下载crypto js npm i cry
  • 闭环系统的零极点图判定稳定性_《自动控制原理》课后习题答案.doc

    第五章 线性系统的频域分析与校正 习题与解答 5 1 试求题5 75图 a b 网络的频率特性 a b 图5 75 R C网络 解 a 依图 b 依图 5 2 某系统结构图如题5 76图所示 试根据频率特性的物理意义 求下列输入信号作用时
  • 点陶极速版《隐私政策》

    点陶极速版 隐私政策 生效日期 2021年3月10日 提示条款 大石桥市多禾网络科技有限公司 以下可统称为 我们 或 多禾 高度重视个人信息的保护 在您使用 点陶极速版 app提供的服务时 以下可称为 点陶极速版 服务 我们将按照本隐私政策
  • c++知识系列:new、operator new、placement new

    总结 operator new 三种形式 http www cplusplus com reference new operator 20new throwing 1 void operator new std size t size th