new & delete, aber delete will nicht funktionieren...



  • Hi,

    ich steh irgendwie auf dem Schlauch... 😞 ...ich habe Speicherlöcher, dacht ich mir also gut ein delete sollte helfen...pustekuchen...also ein delete[]...und? genau! pustekuchen...

    zum speziellen:
    1. Hab ich ein PropertySheet mit new erzeugt
    2. PropertyPages mit new CPropertyPage[iAnzahl]
    3. ein Construct der einzelnen pages
    4. ein AddPage(&oPage[i]) und die Seiten sind im Sheet

    wie kann ich aber den Speicher der PropertyPages wieder freigeben? Da ist nämlich das Speicherloch...

    RemovePage(x), DestroyWindow,... schon ausprobiert...alles ohne erfolg...



  • CPropertySeet* pS = new CPropertySheet();
    CPropertyPage* pP1 = new CPropertyPage();
    CPropertyPage* pP2 = new CPropertyPage();
    CPropertyPage* pP3 = new CPropertyPage();
    pS->AddPage( pP1);
    pS->AddPage( pP2);
    pS->AddPage( pP3);
    pS->DoModal();
    delete pP1;
    delete pP2;
    delete pP3;
    delete pS;
    

    Wo ist das Problem?



  • Das problem liegt darin, das ich erst zur Laufzeit weiß wieviele Pages es sind und dieses Sheet zur Laufzeit in einen MDI-Frame kommt... 😞



  • Und jetzt sollen wir raten, wo Dein Denkfehler liegt?



  • Öhm...nö...ich dachte nur es gäbe da einen Denkfehler drin, denn viele Menschen machen, oder es gäbe einen allgemein bekannten stolperstein, oder irgendsowas in der art...



  • Hilft Dir das?

    CPropertySheet* pSheet = ...;
    while(pSheet->GetPageCount())
      delete pSheet->GetPage(0);
    

Anmelden zum Antworten