Gdiplus :: Image Object和boost :: shared_ptr

时间:2011-01-26 18:11:28

标签: visual-c++ boost mfc gdi+ shared-ptr

我的MFC应用程序中有一个简单的图像缓存类,用于跟踪从文件系统加载的图像:

typedef boost::shared_ptr<Gdiplus::Image> ImagePtr;
typedef std::map<std::string, ImagePtr> ImageMap;

每当通过文件名请求图像时,都会进行查找,或者如果已经加载了图像,则会返回相应的ImagePtr。

退出应用程序时出现问题,共享指针被破坏。我在 checked_delete.hpp

中遇到了访问冲突
// verify that types are complete for increased safety

template<class T> inline void checked_delete(T * x)
{
    // intentionally complex - simplification causes regressions
    typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
    (void) sizeof(type_must_be_complete);
    delete x; // <-------- violation here!!
}

GDI +是否为我管理这些对象?如果是这样,我需要对shared_ptr做什么,以便它不会调用delete?或者是其他的错误?

提前致谢!

1 个答案:

答案 0 :(得分:1)

这可能是在指针被销毁之前调用GdiplusShutdown的症状。