Total Articles 180
[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]