T
Ringding schrieb:
oder du musst am Ende händisch die ganze Map durchgehen und alle Pointer freigeben.
So hab ichs jetzt gemacht, das funzt einwandfrei.
Nur leider bleiben noch ein paar Memory Leaks wegen meinem Dynamischen Menü
Und zwar benutze ich folgende Funktionen zum erstellen des Menüs:
// @func appends item to menu
void AddSubMenuItem(CMenu *pMenu, UINT cmdID, const char *string)
{
pMenu->AppendMenu(MF_STRING | MF_ENABLED, cmdID, string);
}
// @func adds submenu to menu
CMenu *AddSubMenu(CFrameWnd *pWnd, UINT mainMenuItem, UINT itemIndex,
const char *string)
{
CMenu *pMenuBar = pWnd->GetMenu();
CMenu *pSubMenu = pMenuBar->GetSubMenu(mainMenuItem);
CMenu *pMenu = new CMenu;
pMenu->CreatePopupMenu();
pSubMenu->InsertMenu(itemIndex, MF_BYPOSITION | MF_POPUP,
(UINT)pMenu->m_hMenu, string);
return pMenu;
}
in der CMainFrame dann folgendes :
m_pMenu = AddSubMenu(this, 2, GetMenu()->GetSubMenu(2)->GetMenuItemCount()-1, sZeile);
AddSubMenuItem(m_pMenu, iMenuCount, sZeile);
Im Destruktur einfach nur delete m_pMenu geht natürlich nicht, da ich nicht nur 1 Submenü erstelle. Wie kann ich die Zeiger alle löschen?
Edit:
habs, hab einfach ne CList mit den Adressen gefüllt und die dann in Destruktor alle deleted. Nun hab ich auch keine Memory Leaks mehr.