Malloc and constructors
Er...use new
? That's kind of the point. You can also call the constructor explicitly, but there's little reason to do it that way
Using new/delete normally:
A* a = new A();
delete a;
Calling the constructor/destructor explicitly ("placement new"):
A* a = (A*)malloc(sizeof(A));
new (a) A();
a->~A();
free(a);
You can use "placement new" syntax to do that if you really, really need to:
MyClassName* foo = new(pointer) MyClassName();
where pointer
is a pointer to an allocated memory location large enough to hold an instance of your object.
Prefer new
.
But if for some reason you have raw memory, you can construct it with "placement new":
new (ptr) TYPE(args);
And since you won't be using delete, you'll need to call the destructor directly:
ptr->~TYPE();