从两行代码说开去

阅读下面的两行代码,说说new的用法。

int a = 66;
new (&a) int(88);

相信不少程序员会对上面new的用法表示疑惑:第二行的语句是不是有语法错误。使用new分配内存,标准的写法是:int *pData = new int,上面的写法是什么意思呢?实际上,这就是placement new,是重载operator new的一个全局版本,并且不能被自定义的版本所替代。

考虑下面的代码:

class CMyJob
{
public:CMyJob(){printf("my job constructor\n");}~CMyJob(){printf("my job destructor\n");}void Print(){printf("my job print\n");}
};CMyJob *pJob = new CMyJob();

上面的new关键字实际上执行了以下三个步骤:

1、调用operator new分配内存空间。

2、在第1步返回的内存空间地址上调用CMyJob的构造函数生成对象。

3、返回对象的指针,赋值给pJob。

其中,前两个步骤一般由C++内部实现,我们无需额外关

8 placement new的使用相关推荐

  1. Complex Instance Placement

    转自: https://specs.openstack.org/openstack/openstack-user-stories/user-stories/proposed/complex-insta ...

  2. Placement new

    new 操作一般可以分为两个过程:1为申请内存空间 2为调用类型的构造函数进行构造 placement new 调用类型的构造函数对已存在的内存进行构造 1 #include<new.h> ...

  3. 二分图最大匹配(匈牙利算法) POJ 3020 Antenna Placement

    题目传送门 1 /* 2 题意:*的点占据后能顺带占据四个方向的一个*,问最少要占据多少个 3 匈牙利算法:按坐标奇偶性把*分为两个集合,那么除了匹配的其中一方是顺带占据外,其他都要占据 4 */ 5 ...

  4. OpenStack Placement Project(Rocky to Train)

    目录 文章目录 目录 前言 背景 Placement 基本概念 数据模型 指令行 Placement Web Application 的实现与分析 Placement 在 Nova 中的应用 Get ...

  5. OpenStack Nova Placement API 统一资源管理接口的未来

    目录 目录 Placement API 为何称之为 "未来" 操作对象基本概念 数据库操作样例 Placement API 在创建虚拟机时的调度过程 Placement REST ...

  6. Placement new的用法及用途

    什么是placement new? 所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可. 举例来说: class foo ...

  7. pymysql安装_openstack stein安装placement

    openstack stein install placement 安装组件: placement 注:安装服务均遵循以下步骤: mariadb创库授权 keystone创建角色并关联 keyston ...

  8. CNCF 沙箱项目 OCM Placement 多集群调度指南

    作者: ​邱见|红帽资深软件工程师,Open Cluster Management (OCM) 社区发起人,负责人​ ​郝青|红帽高级软件工程师,Open Cluster Management (OC ...

  9. placement new(转)

    今天看STL源码遇到一个问题: template <class _T1, class _T2> inline void _Construct(_T1* __p, const _T2& ...

  10. placement new 操作符

    placement new操作符能够在分配内存时指定内存位置.下面的程序使用了placement new操作符和常规new操作符给对象分配内存. // placenew.cpp -- new, pla ...

最新文章

  1. linux/usr/src/kernels 目录下没有内核源码 解决方法
  2. ThreadLocal的设计与实现
  3. 【推荐】LSI(latent semantic indexing) 完美教程
  4. System.img是如何打包的
  5. 记下MD5验签可能出现的问题
  6. html css 画五角星,纯 CSS3 绘制图形(心形、五角星、六边形等)
  7. hihocoder-Week243-hiho字符串
  8. influxdb mysql对比_influxdb基础入门
  9. iphone 微信下浏览器中数字去除下划线
  10. oracle获取用户名,Oracle 用户名详解
  11. 再问:支付宝即时到账集成接口!
  12. Adobe Photoshop CC已停止工作重装显卡驱动解决方法
  13. 【React】facebook最新状态管理库Recoil
  14. [ 电子商务 ] 解读 Ad Network、Ad Exchange、DSP、SSP、RTB 和DMP 是什么?
  15. 01_测试基础知识---微信公众号测试点
  16. 锤子发新机了,就在2020年10月21日晚,锤子发版新机坚果R2和配套的TNT扩展本
  17. 用citespace对知网文献的关键词分析结果很少如何解决?
  18. SDNU QLU 2022.10.15 新生赛
  19. $route.push()多次点击跳转报错问题
  20. 机器学习 06:SMO 算法

热门文章

  1. 醍醐灌顶:领域驱动设计实现之路
  2. Mikrotik: Setup SSTP Server for Windows 10 Client
  3. Android 多线程下载以及断点续传
  4. CSU 1650 影魔大战
  5. excle 拆分合并的单元格并填充数据
  6. 【STM32学习1】基础知识与概念明晰
  7. 整理了一些可以发外链的网站,分享几十个发外链的网站
  8. Wincc 全局c变量的创建和使用
  9. 被马云热捧的新零售网红餐厅盒马生鲜,问题不少
  10. CentOS软件卸载和依赖