Ich versuche mit GDI + zu arbeiten und stoße auf ein komisches Speicherleck. Ich habe eine vector
von GdiplusBase
Zeigern, alle von ihnen dynamisch erstellt. Das Seltsame ist, ist jedoch, dass, wenn ich versuche, die Objekte als GdiplusBase
Zeiger zu löschen, zum BeispielGDI + verliert Speicher beim Löschen von Zeigern als GdiplusBase *?
vector<GdiplusBase*> gdiplus;
gdiplus.push_back(new Image(L"filename.jpg"));
delete gdiplus[0];
Das Objekt wird nicht gelöscht und Speicherlecks (nach Task-Manager). Wenn ich jedoch auf den ursprünglichen Zeiger zurückgeworfen und anschließend gelöscht habe, wird das Objekt korrekt gelöscht.
delete (Image*)gdiplus[0];
Das Seltsame daran ist, soweit ich das beurteilen kann, dass (nach MSDN) GdiplusBase
is the base class of all GDI+ objects and owns the delete operators for all of them. Sollte in diesem Fall nicht delete gdiplus[0];
korrekt funktionieren und den Speicher freigeben? Mache ich hier etwas falsch?