您的位置:首页 > 其它

基类与派生类的析构函数(1)

2016-01-03 21:12 225 查看
#define _CRTDBG_MAP_ALLOC
#include <iostream>

#include <stdlib.h>

#include <crtdbg.h>
using namespace std;
#ifdef _DEBUG

#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)

#define new DEBUG_NEW

#endif

class parent {
public:
parent() {
cout << "parent new" << endl;
p = new char(100);
}

~parent() {
cout << "parent delete" << endl;
delete p;
}
private:
void *p;
};

class son : public parent{
public:
son() {
q = new char(100);
cout << "son new" << endl;
}

~son() {
cout << "son delete" << endl;
delete q;
}
private:
void *q;
};

void t1()
{
/*
parent new
son new
son delete
parent delete
*/
son* s = new son();
delete s;
}

void t2()
{
/*
parent new
son new
parent delete

error: memory leak
*/
parent * p = new son();
delete p;
}

int _tmain(int argc, _TCHAR* argv[])
{
// dump memory leak information
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
<span style="white-space:pre">	</span>// 存在内存泄露
t2();

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: