说我们有
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的对象?
要在特定地址实例化类实例,您需要使用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时必须显式调用析构函数.