永发信息网

请教一个VC中有关GDI Image::FromFile 使用的一个问题,当Image加载一个不存在的文件时产生的问题。

答案:2  悬赏:60  手机版
解决时间 2021-02-02 05:27
  • 提问者网友:暮烟疏雨之际
  • 2021-02-01 13:53
请教一个VC中有关GDI Image::FromFile 使用的一个问题,当Image加载一个不存在的文件时,在释放时delete 该Image指针时会出错。
附上相应代码,如下:
Image *mpPrevImage = NULL;
mpImage = Image::FromFile(L"");//加载一个不存在的文件,或直接文件为空时。此时加载失败,但mpImage指针并不为NULL。

当在程序退出,或析构时,我调用了:
if (mpImage != NULL)
{
delete mpImage;//此处会出现异常
mpImage = NULL;
}
调用delete时会出现异常。

请问高手,在如上情况下,该如何处理这个mpImage指针?
或着如何处理这个由Image::FromFile生成的一个空文件的mpImage指针。

DLG的成员变量:
Image *mpImage1 = NULL;
Image *mpImage2 = NULL;
Image *mpImage3 = NULL;

DLG初始化时:
mpImage1 = Image::FromFile(L"");
mpImage2 = Image::FromFile(L"C:\\123.png");//给一个存在的图片
mpImage3 = Image::FromFile(L"");//

在DLG的OnDestory()中做:
if (mpImage1 != NULL)
{
delete mpImage1;
mpImage1 = NULL;
}
if (mpImage2 != NULL)
{
delete mpImage2;
mpImage2 = NULL;
}
if (mpImage3 != NULL)
{
delete mpImage3;
mpImage3 = NULL;
}

然后你用DEBUG, F5运行,然后点击DLG的“X”关闭按钮,看下,会有异常的。
如果你用“Ctrl + F5”或直接运行,关闭是没有异常提示的。
最佳答案
  • 五星知识达人网友:过活
  • 2021-02-01 14:25
跟你的环境有关系吧,我把你的代码运行了一下,没有问题。
全部回答
  • 1楼网友:冷風如刀
  • 2021-02-01 15:37
我。。知。。道 加。。我。。私。。聊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯