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;这句用 { } 包起来,保证检测不到了,注意理解 作用域 这个概念