0 0

delete 堆区内存的时候出错5

前几天工作中遇到这个问题,而且在csdn上问过各位了,但是总归是没有得到结果,只好下载了一个新的版本源码编译了一下问题解决了,现在,想请教前辈们指导下,在什么情况下,会出现delete一块堆区出错

.exe 空间代码
      CxImage *pImage = new CxImage;
      delete pImage;     //这个位置就会出错,而且无任何有价值的调试输出


CxImage是 大名鼎鼎的 CXiamge库,使用方式为动态链接库。

这里不是我不贴堆栈信息调试信息等,确实这些内容中没有任何的提示。
2012年12月18日 09:27

1个答案 按时间排序 按投票排序

0 0

应该是因为CxImage *pImage = new CxImage;没有成功。在堆上没有new成功,你再去delete肯定是有问题的。具体什么原因导致CxImage *pImage = new CxImage;没有成功,就不太好说了。

还有,你new完以后啥也没做,就去delete,这段代码有什么意义?一般都像下面这样使用:

// 创建 CxImage 对象
CxImage* cxImage = new CxImage;
// CxImage 对象读取文件
try
{
cxImage->Load(PictureFilename.c_str(), format);
}
catch (...)
{
delete cxImage;
return;
}

2012年12月18日 12:38

相关推荐

Global site tag (gtag.js) - Google Analytics