用法以及编译器解释

placement new 允许我们将object构建于已经分配的内存上。(所以此时必须有个指针指向已经分配好的内存)
没有所谓的placement delete ,因为placement new根本没有分配内存.
也有种说法,是将placement new对应的内存释放掉的操作为placement delete。

char* buf = new char[sizeof(Complex)*3];
Complex* pc = new(buf)Complex(1,2);    //将对象分配在已经分配好的内存buf上
...
delete [] buf;

被编译器转为:

Complex *pc;
try{1、void mem = operator new(sizeof(Complex),buf);    //在顶点内存2、pc = static_cast<Complex*>(mem);                    //转型3、pc->Complex::Complex(1,2);                     //调用构造函数
}
catch(std::bad_alloc){//若allocation失败就不执行构造函数
}

pc、buf指向同一个地方。

关于operator new,此处用的函数与之前提到的函数有点不一样:https://blog.csdn.net/qq_42604176/article/details/111638568
这里的用法为:

你传递分配好的内存给它,它什么都没做,将地址返回。
于是我们可以总结,placement new就是调用了构造函数。
注意,这三种写法是一致的:

C++ 内存基本构件 placement new相关推荐

  1. C++ 内存基本构件new [] /delete []的意义、内存泄漏原因、VC下cookie的基本布局

    目录 一.对new [] delete [] 的理解 1.delete的[]遗漏会带来什么影响 二.以示例探讨 三.cookie的理解 一.对new [] delete [] 的理解 new的对象是个 ...

  2. C++ 内存基本构件new/delete的意义、运用方式以及重载方式

    目录 一.对new的理解 1.new做了什么 2.new被编译器转为了什么 3.operate_new源代码长啥样 二.对delete的理解 1.delete做了什么 2.delete被编译器转为了什 ...

  3. placement new(转)

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

  4. 如何让new操作符只构造,不申请内存

    问题 c++中的new操作符 通常完成两个工作 分配内存及调用相应的构造函数. 请问: 如何让new操作符不分配内存,只调用构造函数? 这样的用法有什么用? placement new的含义 plac ...

  5. C++中的内存分配new()

    "new"是C++的一个关键字,同时也是操作符.关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结. new的过程 当我们使用 ...

  6. operator new与placement new

    通常讲的new指的是new operator,使用new operator的时候,实际上执行了三个步骤: 1)调用operator new分配内存 :2)调用构造函数生成类对象:3)返回相应指针. 分 ...

  7. placement new 讲解

    placement new 是重载operator new的一个标准.全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版 ...

  8. C++中的new、operator new与placement new

     C++中的new/delete与operator new/operator delete new operator/delete operator就是new和delete操作符,而operato ...

  9. 常见的【内存泄漏】姿势

    关注公众号[高性能架构探索],第一时间获取干货:回复[pdf],免费获取计算机经典书籍 本文节选自文章: 内存泄漏-原因.避免以及定位 本文总结常见内存泄漏的几种方式,留意到这几点,可以避免95+%以 ...

最新文章

  1. ReentrantLock+线程池+同步+线程锁
  2. 远程ubuntu虚拟机Tensorflow搭建 - 1 SSH连接
  3. 王爽《汇编语言》第三版 第三章 内存访问
  4. 能不做自己写个类,也叫java.lang.String
  5. selenium的使用教程1
  6. Facebook的GBDT+LR模型python代码实现
  7. 前端招聘与前端卖身的困境
  8. ubuntu 启动图形界面命令_Windows 10 远程连接 Ubuntu 18.04 Server图形界面
  9. html5--6-50 动画效果-变形
  10. 13.MongoDB之Gridfs
  11. 管理感悟:软件的特性
  12. Python调用Matlab教程
  13. SpringBoot+Querydsl 框架,大大简化复杂查询操作
  14. Android 仿微信语音聊天,flutter项目结构
  15. ChatGPT 带火的「提示工程师」岗,不用写代码,也能获得年薪数百万?
  16. flyme禁止系统更新_魅族怎么关闭系统更新
  17. JAVA狗叫源代码_从头认识java-1.1 编程语言抽象过程以及java的基础特性
  18. 事务第02讲:数据库事务(MySQL)
  19. 编写CSDN博客,如何去掉插入的图片上的水印
  20. 防抖节流理解与应用场景

热门文章

  1. html语言及语法结构,HTML语法结构.ppt
  2. Hey,孙叫兽的2020 CSDN年度报告已出炉,请查收!
  3. routersploit简单实例
  4. php怎么把字符转成大写,php怎么把字符串转换为大写
  5. 手机计算机数字显示在桌面上,手机计算器有哪些使用方法
  6. Vue 封装的组件生命周期钩子
  7. 原生JS封装ajax以及request
  8. 前端也要会的数据结构 (不定期更新篇)
  9. 关于css透明度的问题
  10. ORM框架greenDao 2 (用于了解旧版本的使用方法,目前最新版本为3.2.2,使用注释的方式来生成)...