[Source]


#include <new>
#include <VInt>
#include <VDebugNew>

class MyObj
{
public:
  VInt i;
public:
  MyObj()          { printf("MyObj::MyObj\n");  }
  virtual ~MyObj() { printf("MyObj::~MyObj\n"); }
  void foo()       { printf("MyObj::foo\n");    }
};

void test1()
{
  MyObj obj;
  obj.foo();
}

#ifdef _DEBUG
#undef new
#define new new
#endif // _DEBUG

void test2()
{
  char p[sizeof(MyObj)];

  MyObj* obj = new(p) MyObj();
  obj->~MyObj();
}

#ifdef _DEBUG
#undef new
#define new debug_new
#endif // _DEBUG

int main()
{
  test1();
  test2();
  new char[5];
  return 0;
}




[Result]


000000000018F920 VInt::VInt()

MyObj::MyObj

MyObj::foo

MyObj::~MyObj

000000000018F920 VInt::~VInt() 0

000000000018F920 VInt::VInt()

MyObj::MyObj

MyObj::~MyObj

000000000018F920 VInt::~VInt() 0

******************************************************************************

000000013F6E91B0 memory leak 00000000003B81D0(5 bytes) main.cpp:43

******************************************************************************




[Download]


ctor_dtor_mem_test.zip