Я пытаюсь работать с GDI+ и сталкиваюсь со странной утечкой памяти. У меня есть vector
из GdiplusBase
указателей, все они создаются динамически. Однако странно то, что если я попытаюсь удалить объекты как указатели GdiplusBase
, например,
vector<GdiplusBase*> gdiplus;
gdiplus.push_back(new Image(L"filename.jpg"));
delete gdiplus[0];
Объект не удаляется и происходит утечка памяти (по данным диспетчера задач). Однако, если я вернусь к исходному указателю, а затем удалю,
delete (Image*)gdiplus[0];
Объект корректно удален. Насколько я могу судить, странно то, что (согласно MSDN) GdiplusBase
— это базовый класс всех объектов GDI+, которому принадлежат операторы удаления для всех них. В таком случае delete gdiplus[0];
не должен работать правильно и освобождать память? Я делаю что-то не так здесь?