-
-
[原创]关于派生类中的CString泄露问题
-
发表于:
2013-5-23 16:29
5113
-
#include <afx.h>
//#include <atlstr.h>
class CBase
{
public:
virtual void Func(){}
};
class CChild :public CBase
{
public:
CChild(){m_str = _T("");}
private:
CString m_str;
public:
virtual void Func(){m_str = _T("腾讯管家你妹刚才为什么报我是木马");}
};
void main()
{
CBase *m_pBase = new CChild;
m_pBase->Func();
if (NULL != m_pBase)
{
delete m_pBase;
m_pBase = NULL;
}
}
编译运行这段程序,发现派生类中的CString会泄露。
Detected memory leaks!
Dumping objects ->
{56} normal block at 0x00B73388, 49 bytes long.
Data: <` d > 60 AB 64 00 20 00 00 00 20 00 00 00 01 00 00 00
解决方法一:将基类的构造函数虚拟化 即可解决
virtual ~CBase(){}
解决方法二:将#include <afx.h>换成#include <atlstr.h>即可解决
自我感觉AFX这套东西没有ATL强悍。CString这样也会泄露。好久没发帖了。大家好~
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课