Die Sache mit den Zeigern, oder wieviel Spaß bringen memory leaks



  • Aloha,

    sehr wahrscheinlich eine Frage, die man sich selbst mit etwas Hirnschmalz beantworten kann.

    Ich habe eine MFC - Anwendung, die an einigen Stellen Nicht-Modale Dialoge öffnet in Form von :

    [cpp]CDialog *neu = new CDialog;
    neu->create(IDD_SONSTEIN_DIALOG);
    neu->ShowWindow(SW_SHOWNORMAL);[cpp]

    Das ganze befindet sich innerhalb einer Methode, die direkt danach beendet wird.

    Nun zeigt mir das VS freundlicherweise zum Schluß immer an, Memory leak da, memory leak hier usw.

    Da ich ja nicht weiß, wann dat Dingens ( der Dialog ) geschlossen wird, kann ich erst durch meine ungeschickte Programmierung am Ende des Programms reagieren, indem ich den Zeiger in einer Liste ( hehe ) abspeichere und beim Verlassen des Programmes lösche.

    Das funzt zwar, aber ich halte es für absolut unelegant.

    Hat jemand ne bessere Idee ?

    Besten Dank und Grüße

    Der BOA



  • Überlade die Funktion CMeinDialog::PostNcDestroy und rufe darin ganz frech delete this; auf 😉

    class CMeinDialog : public CDialog
    {
    // ...
    virtual void PostNcDestroy()
    {
    delete this;
    }
    // ...
    }
    

Anmelden zum Antworten