代码之家  ›  专栏  ›  技术社区  ›  default

图像析构函数中的访问冲突

  •  4
  • default  · 技术社区  · 15 年前

    一个非常简单的程序我可以说。。

    #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 回复  |  直到 15 年前
        1
  •  8
  •   Jeff Yates    15 年前

    这个 Bitmap 在调用shutdown GDI+之后,您创建的实例超出了范围。所以当 被破坏,它不能调用给定的 GdipDisposeImage

    如果你确定 bitmap 在关闭GDI+之前被删除。