幻の上帝吧 关注:328贴子:3,165
  • 1回复贴,共1

placement new 实现的一个疑惑?

只看楼主收藏回复

比如 class_ *pointer = new(m) class_(10); // m 已经用 malloc 分配好了内存.
我再 vs 里面 step into specific 后, 发现有两步
1. 调用 operator new

2. 调用构造函数 (class_::class_)
我知道抽象来看就是用已分配空间的指针构造函数, 但是我不理解这两个步骤是怎么组合成最后这个最终目的的 (百思不得其解, 也没有搜到相关信息). 比如光第一步那个 return _Where; 的作用是什么我就没有搞懂


IP属地:四川1楼2017-04-24 15:27回复
    operator new的返回值提供new表达式的值。这里也没其它选项了。调用构造函数的也是new表达式求值时发生。所以整个new表达式除了调用构造函数和取得原来分配好的指针作为返回值以外没有其它作用。


    IP属地:北京2楼2017-04-29 11:01
    回复