У меня есть простой класс кеша изображений в моем приложении 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, чтобы он не вызывал удаление? Или что-то еще не так?
Заранее спасибо!