当前位置: 首页 > news >正文

C++中的new操作符:new operator、operator new、placement new

new操作符(new operator)

当你写这种代码时:
string *ps = new string("Memory Management");
你使用的new是new操作符。

new操作符的动作包含两部分:

  1. 在堆上为创建的对象申请内存
  2. 调用对象的构造函数进行初始化

operator new

当你写这种代码时:
void *rawMemory = operator new(sizeof(string));
你使用的new是operator new。

operator new的职责仅仅是分配内存,它不会调用对象的构造函数进行初始化

operator new的函数声明一般如下:

void * operator new(size_t size);

  • 返回值类型void*,未初始化的内存
  • 參数size_t确定分配多少内存
  • 你能添加额外的參数重载函数operator new,可是第一个參数类型必须是size_t。
    -(有关operator new很多其它的信息參见Effective C++ 条款8至条款10。)

placement new

当你写这种代码时:
Widget *p = new (buffer) Widget(widgetSize);
你使用的new是placement new。

placement new的职责是在一块未初始化的内存上,调用对象的构造函数

以下的样例是placement new怎样使用:

点击查看代码
class Widget {public:Widget(int widgetSize);...
};Widget * constructWidgetInBuffer(void *buffer,int widgetSize)
{return new (buffer) Widget(widgetSize);
}

new (buffer) Widget(widgetSize)的职责是在buffer指向的内存上,调用Widget的构造函数

小结

  • 你想在堆上建立一个对象,应该用new操作符。它既分配内存又为对象调用构造函数。
  • 假设你只想分配内存,就应该调用operator new函数;它不会调用构造函数。
  • 假设你想定制自己的在堆对象被建立时的内存分配过程,你应该写你自己的operator new函数。
  • 假设你想在一块已经获得指针的内存里建立一个对象。应该用placement new。

參考:https://www.cnblogs.com/slgkaifa/p/6887887.html

http://www.zskr.cn/news/22748.html

相关文章:

  • C++20 协程的简单示例
  • 同一设备多账号登录,如何避免消息推送“串门”?
  • Character Animator 2025下载安装教程:2D角色动画软件零基础入门,附最新下载安装教程及激活方法
  • 2025年彩钢瓦/镀锌板/折弯件/C型钢/Z型钢/压型瓦/楼承板/次檩条厂家推荐排行榜,专业钢结构安装与定制加工实力解析
  • 完整教程:display ospf peer 概念及题目
  • 开源数据采集工具 logstash(收集日志)/telegraf(收集指标)
  • 2025 年堆高车厂家最新推荐排行榜:聚焦专利技术、华为等大牌合作案例及国内优质品牌解析手动液压/手动液压/卷筒/油桶堆高车厂家推荐
  • Excelize 开源基础库发布 2.10.0 版本更新
  • 高效搞定outlook大附件怎么发送的方法与技巧
  • HAP 签名提取:从定位到解析的实操指南
  • 内外网文件传输工具有哪些?最强合集在这里
  • 用delegate 和event实现事件(有参和无参,有返回值和无返回值)
  • 跨网文件交换系统是什么?解锁企业高效数据传输新姿势
  • 详细介绍:5、软件工程
  • vscode 里面的python切环境
  • ChromeOS融合Android技术栈,打造更智能的Chromebook体验
  • 2025 年最新推荐国际物流服务公司权威排行榜:聚焦海运快递跨境专线,助力商家选优质物流伙伴
  • 2025年国内高温隧道炉知名品牌推荐,固化炉,回流焊炉,连续式烘干线厂家供货商!
  • 2025年10月17日信息公布:太阳能路灯厂家最新推荐榜~覆盖乡村户外、单臂双臂、农村及5-8米LED款,精选优质路灯企业
  • 基于ZigBee的无线传感器组网
  • 2025 年立体画厂家最新推荐榜单:涵盖 3D 光栅立体画、立体光栅卡、3D 装饰立体画、三维立体画,助企业与消费者精准挑选优质品牌
  • 完整教程:「2025秋招季」AI简历筛选如何破解海选难题?
  • F1分数(F1-score)
  • ComfyUI InstantID 文生图,图生图完整运行指南
  • Qt项目作品在苹果macos上编译运行效果/视频监控系统/物联网平台等
  • 2025年靠谱的风机/离心风机/轴流风机生产企业排行榜-江苏中南鼓风机有限公司
  • 2025年口碑好的挤浆机/单螺旋挤浆机TOP品牌推荐厂家-滕州市建兴机械有限公司
  • git 舍弃当前所有修改
  • 2025.10.17——1蓝
  • Lean语言如何连接数学与编程