malloc/free

malloc/freeだとコンストラクタ/デストラクタが呼ばれない、と。

#include <iostream>
#include <cstring>

using namespace std;

class Foo {
public:
  Foo() { cout << "Foo()\n"; };
  ~Foo() { cout << "~Foo()\n"; };
};

int main() {
  Foo *p = (Foo *) malloc(sizeof(Foo));
  delete p;
  Foo *p2 = new Foo;
  free(p2);
  return 0;
}


~Foo()
Foo()