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

奇怪的指针删除有关问题

2012-02-13 
奇怪的指针删除问题一个图像处理程序中,这个只能打开一幅图片,第二幅时就出现异常if(m_pBakupDIBits!NULL

奇怪的指针删除问题
一个图像处理程序中,这个只能打开一幅图片,第二幅时就出现异常
if(   m_pBakupDIBits   !=   NULL   )
{    
              delete   []   m_pBakupDIBits;
                m_pBakupDIBits;
}
这个没一点问题,任意多幅都可以,

if(   m_pBakupDIBits   !=   NULL   )
{      
m_pBakupDIBits=   NULL;
delete   []   m_pBakupDIBits;
}
为什么呢,谢谢!

[解决办法]
---------------------------
if( m_pBakupDIBits != NULL )
{
m_pBakupDIBits = NULL;
delete [] m_pBakupDIBits;
}
---------------------------
你这段程序……,这段程序中pBakupDIBits在被delete之前就被置为空指针,后面的那句delete [] m_pBakupDIBits删除的是一个空指针,什么都没做,当然不会出错,只不过会内存泄露而已……。
这两句交换一下位置才正确,至于为什么出错,那要看你其他地方做什么了……

[解决办法]
if( m_pBakupDIBits != NULL )
{
m_pBakupDIBits= NULL;
delete [] m_pBakupDIBits;
}
如果m_pBakupDIBits指向的内存没有其他指针指向,这段内存肯定泄漏。
[解决办法]
看不懂你的问题
不过第二个漏了
[解决办法]
m_pBakupDIBits的析构函数有问题。。。
[解决办法]
if( m_pBakupDIBits != NULL )
{
delete [] m_pBakupDIBits;
m_pBakupDIBits;
}
---------
m_pBakupDIBits = NULL;//最好

if( m_pBakupDIBits != NULL )
{
m_pBakupDIBits= NULL;
delete [] m_pBakupDIBits;
}
----------
赋值为NULL,在delete ? 等于没delete
[解决办法]
这么写就OK了
if( m_pBakupDIBits != NULL )
{
delete [] m_pBakupDIBits;
m_pBakupDIBits = NULL;
}
你那么写只是将指针付成NULL,并没有进行释放,有内存泄露~

热点排行