我的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?或者是其他的错误?
提前致谢!
答案 0 :(得分:1)
这可能是在指针被销毁之前调用GdiplusShutdown
的症状。