Code Bye

析构函数中delete内存泄露问题求指导

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

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明析构函数中delete内存泄露问题求指导