说我们有
Class A{};
int *p = malloc(100);
A a; //default constructor in use
*p = A; (question???)
如何在分配内存 p 上初始化 A 类型的对象?
说我们有
Class A{};
int *p = malloc(100);
A a; //default constructor in use
*p = A; (question???)
如何在分配内存 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);
}
请注意,使用placement new 时必须显式调用析构函数。