2

说我们有

Class A{};
int *p = malloc(100);
A a; //default constructor in use
*p = A; (question???)

如何在分配内存 p 上初始化 A 类型的对象?

4

1 回答 1

8

要在特定地址实例化类实例,您需要使用placement new

#include <new>
#include <stdlib.h>

class A
{};

int main()
{
  void *p = malloc(100);
  A* a = new(p) A();
  a->~A();  // call destructor explicitly
  free(p);
}

请注意,使用placement new 时必须显式调用析构函数。

于 2012-05-22T20:29:36.060 回答