Unlike new
and delete
expressions, std::malloc
does not call the constructor when memory for an object is allocated. In that case, how must we create an object so that the constructor will also be called?
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
A* a = new A();
delete a;
A* a = (A*)malloc(sizeof(A));
new (a) A();
a->~A();
free(a);