初始化malloc地址中的类对象?

bbc*_*bbc 0 c++

说我们有

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

如何在alloc memory p上初始化类型A的对象?

Pra*_*ian 6

要在特定地址实例化类实例,您需要使用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);
}
Run Code Online (Sandbox Code Playgroud)

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