c++ - 下面这句话在c++中是什么意思

标签 c++ new-operator placement-new

<分区>

Possible Duplicate:
C++'s “placement new”

下面代码中第3行代表什么,是类型转换的方式吗?或者什么

 void someCode()
 {
   char memory[sizeof(Fred)];     // Line #1
   void* place = memory;          // Line #2

   Fred* f = new(place) Fred();   // Line #3
   // The pointers f and place will be equal

   ...
 }

最佳答案

这是 Placement new 的典型用法.
它允许您分配内存,然后在该特定内存位置构造对象。

第 3 行本质上只是调用构造函数 Fred::Fred()Fred 构造函数中的 this 指针将等于 place。因此,返回的指针 f 将等于 place

关于c++ - 下面这句话在c++中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10033194/

相关文章:

c++ - 无法构建简单的 Boost XML 序列化示例

python - 如何使用 SWIG Python 从 vector 内部访问 C++ 对象方法

c++ - 键盘布局更改时如何收到通知?

c++ - 将函数模板传递给其他函数

c++ - placement new zero 会占用内存吗?

c++ - STL 分配器和运算符 new[]

c++ - 创建指针数组时 operator new[] 的语法

c++ - 即使在同一类型上,是否应该使用 placement new 调用析构函数

c++ - 使用 : Construction of objects at predetermined location in C++

c++ - 在 C++ 中放置派生的新基子对象