classA:
class ClassA { public: ClassA(); ~ClassA(); void destroy(); private: char* test; }; ClassA::ClassA() { test = new char; } ClassA::~ClassA() { if (test != NULL) { delete test; } }
main函数中:
#ifdef _DEBUG //重载new #define new new(_NORMAL_BLOCK, __FILE__, __LINE__) #endif #include <iostream> #include <Windows.h> #include "Base.h" #include "TestA.h" using namespace std; int main() { ClassA a; _CrtDumpMemoryLeaks(); }
退出程序后输出
Detected memory leaks!
Dumping objects ->
{141} normal block at 0x0044B820, 1 bytes long.
求指导这里出现问题的原因
解决方案
20
_CrtDumpMemoryLeaks();调用的时候还没有执行delete,你的代码其实没有内存泄露的。较真的话,你把 ClassA a;这句用 { } 包起来,保证检测不到了,注意理解 作用域 这个概念