free() oder delete !?



  • ich war gerade einem fehler auf der spur, der beim beenden meines programm auftrat. es hing mit ungültigen objekten im speicher zusammen, die mit ziemlicher sicherheit vor der verwendeung gelöscht waren.

    ich habe bisher jedes objekt in einem CObArray mit delete gelöscht. jetzt habe ich die objekte zum testen mit free() gelöscht, und ich konnte mein programm problemlos beenden.

    hatte mir eigentlich nie große gedanken drum gemacht wie ich objekte aus dem speicher lösche.

    meine fragen:
    - warum klapt es mit free() und nicht mit delete ?
    - soll ich jetzt immer free() anstatt delete benutzen ?

    danke im voraus



  • Speicherverwaltungsfunktionen treten immer paarweise auf - und du solltest verschiedene Paare auch nicht miteinander mischen. (im Klartext: was du mit new angefordert hast, wird mit delete freigegeben, Speicher von malloc() wird durch free() entsorgt,...)

    (wenn du es ausführlicher haben willst, lies meinen Magazin-Artikel "Speicherverwaltung in C++")



  • der artikel ist dir auf jeden fall gelungen !!

    danke


Anmelden zum Antworten