Image析构函数中的访问冲突

时间:2010-07-28 14:56:23

标签: windows visual-studio-2008 gdi+ access-violation

我可能会说一个非常简单的程序..

#include <windows.h>
#include <gdiplus.h>

using namespace Gdiplus;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR cmdLine, int nShow){
    // Gdiplus variables
    GdiplusStartupInput mGdiplusStartupInput;
    ULONG_PTR           mGdiplusToken;
    GdiplusStartup(&mGdiplusToken, &mGdiplusStartupInput, NULL);

    Bitmap bitmap(L"left.bmp");


    GdiplusShutdown(mGdiplusToken);
    return 0;
}

运行此示例时,我在此函数中的GdiplusBitmap.h中获得了访问冲突

inline 
Image::~Image()
{
    DllExports::GdipDisposeImage(nativeImage);
}

删除对Bitmap bitmap(L"left.bmp");的调用一切正常..我试图在msdn上找到一个简单的例子(例如Bitmap constructor附近的某个地方,但没有找到任何东西。)

我错过了什么?

1 个答案:

答案 0 :(得分:8)

在关闭GDI +的调用之后,您创建的Bitmap实例超出了范围。因此,当Bitmap被破坏时,它无法调用给定的GdipDisposeImage方法。

如果确保在关闭GDI +之前删除了bitmap,则错误应该消失。