问题
xxxxxx.exe 中的 0x0043a998 处有未经处理的异常:0xC0000005: 读取位置 0x029d846c 时发生访问冲突
断点位置
..\MicrosoftSDKs\Windows\v7.0A\Include\GdiPlusBitmap.h
Image::GetWidth()
{
UINT width = 0;
→ SetStatus(DllExports::GdipGetImageWidth(nativeImage,&width));
return width;
}原因及解决方案:
原因
在使用Image对象之前调用了Gdiplus::GdiplusShutdown函数,使得之前创建的Image对象全部为野指针,建议一个程序只初始化一次GDI,在整个程序结束后关闭,而不要在操作程序过程中使用Gdiplus::GdiplusShutdown关闭GDI。
解决方案
在整个解决方案里搜索“Gdiplus::GdiplusShutdown “,删掉冗余的GDI关闭函数。
Gdiplus::GdiplusShutdown(gdiplusToken);
GdiplusStartupInput gdiplusStartupInput;
bool fRet = true;
if( gdiplusToken == 0 )
fRet = GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);
本文分析了一个关于GDI+在使用Image对象时发生的异常问题,详细解释了异常产生的原因,并提供了解决方案,即避免在程序运行过程中不当关闭GDI+。
1万+





