首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC程序内存泄露

2013-09-05 
求助:VC程序内存泄露BOOL CBaseInfoDlg::LoadBMPFile(const char *pBMPPathname){CFile fileif( !file.Op

求助:VC程序内存泄露
BOOL CBaseInfoDlg::LoadBMPFile(const char *pBMPPathname)
{
CFile file;
if( !file.Open( pBMPPathname, CFile::modeRead) )
return FALSE;
m_nFileLen = file.GetLength();
m_pBMPBuffer = new char[m_nFileLen + 1];

if(!m_pBMPBuffer)
return FALSE;
if(file.Read(m_pBMPBuffer,m_nFileLen) != m_nFileLen)
return FALSE;
return TRUE;
}
void CBaseInfoDlg::OnDestroy()
{
CDialogEx::OnDestroy();
if (m_pBMPBuffer != NULL)
{
delete m_pBMPBuffer;
m_pBMPBuffer = NULL;
}
}

为什么m_pBMPBuffer 还是会出现内存泄露呢!
[解决办法]

引用:
也没用,也是泄露


delete []m_pBMPBuffer;这个已经释放了堆上分配的空间了,
如果还是内存泄露问题,查查别的地方是不是也开辟了堆空间吧!

[解决办法]
楼主,是不是你的程序运行中释放了两次或以上?
比如你中间释放一次,而在 Destroy 或 析构中又释放一次…… 这样肯定出错。

你申请一次内存,就应该对应一个释放,一个new 对应一次 delete,假如你对一个指针如此做:
char *p = new char[100];
......
p = new char[200];
......
delete []p;
这样必然内存泄露

热点排行