Was muss alles mit "delete" freigegeben werden?



  • Erhard Henkes schrieb:

    C++ verwendet keinen eingebauten Garbage Collector, was man auch als Vorteil ansehen kann.

    Der Vorteil ist "weniger Automatismen".
    Der gleiche Vorteil dürfte von C-Codern gegen C++ angeführt werden.



  • Der gleiche Vorteil dürfte von C-Codern gegen C++ angeführt werden.

    Daher schreiben wir das Betriebssystem http://prettyos.de immer noch in C. Allerdings gefällt mir der C++11 Standard inzwischen sehr gut. Modernes C++ und die bewährte MFC passen immer noch bestens zusammen. In PrettyOS haben wir das gleiche Problem mit malloc/free (entspricht new/delete) auf dem Heap. Deshalb habe ich dort ein malloc mit Namen geschaffen, einen Heap-Log und einen malloc/free-Zähler, sodass man Fehler recht schnell entdeckt und reagieren kann. Transparenz und die Intelligenz, Kreativität und Erfahrung des Programmierers. Diese Mischung ist ideal. Automatismen sind immer kritisch und führen zur Verdummung, zumindest zu Unachtsamkeit.



  • Ihr bastelt ein eigenes Betriebssystem, hab eben was dazu gelesen, ist ja cool 🕶



  • Erhard Henkes schrieb:

    Automatismen sind immer kritisch und führen zur Verdummung, zumindest zu Unachtsamkeit.

    Das kannste nicht so pauschal sagen. Sie können auch das Leben erleichtern.

    C hat auch eine versteckte Speicherverwaltung. Die kommt zum Tragen, wenn man ganze Strukturen (nicht als Pointer) zwischen Funktionen herumreicht.



  • Die C++ Automatismen muss man verstehen, sonst funktionierts nicht. Deswegen besteht da wohl nicht die Gefahr zu Verdummen.



  • Ja, völlig frei davon sind die C++ Bibliotheken nicht, gibt auch Referenzzähler für Objekte usw., aber gc geht nicht, schon aus Prinzip. 😉



  • Erhard Henkes schrieb:

    Ja, völlig frei davon sind die C++ Bibliotheken nicht, gibt auch Referenzzähler für Objekte usw., aber gc geht nicht, schon aus Prinzip. 😉

    C++ ist ein Relikt aus der Pionierzeit der ständig anwachsenden Hardware-Power. Demgemäß verfolgt C++ eine Philosophie der Kompromisse zwischen Maschinenbezogenheit und Algorithmik. Ich halte den Einzug eines GC in spätere C++-Standards nicht für unmöglich. 😉



  • C++ ist eine der weniger Programmiersprachen überhaupt, die deterministische Destruktoren hat. Ich weiß nicht, wie das mit der Idee eines GC zusammenpasst, ich glaub, gar nicht. Deswegen werden uns GCs in C++ hoffentlich auch in Zukunft erspart bleiben.



  • Mechanics schrieb:

    C++ ist eine der weniger Programmiersprachen überhaupt, die deterministische Destruktoren hat. Ich weiß nicht, wie das mit der Idee eines GC zusammenpasst, ich glaub, gar nicht. Deswegen werden uns GCs in C++ hoffentlich auch in Zukunft erspart bleiben.

    Ein durchaus valides Argument. Den Laufzeit-Determinismus wird man auf jeden Fall aufrecht zu erhalten versuchen. Das kann dadurch geschehen, dass ein standardmäßiger GC eine Sprachoption wird. Oder durch einen GC, der ähnlich der Smart-Pointer vom Programmierer zu 100% kontrollierbar bleibt. Ich glaube nicht, dass es C++ jemals gelingen wird, sich von der Philosophie der Muttersprache zu lösen. Letztlich ist ja genau das eine seiner Stärken.



  • Ich glaube nicht, dass es C++ jemals gelingen wird, sich von der Philosophie der Muttersprache zu lösen. Letztlich ist ja genau das eine seiner Stärken.

    Die Diskussion läuft etwas off-topic, aber sowhl die MFC als auch C++ 11 decken eine breite Palette an historischen Sprachmöglichkeiten ab, die vor allem die geniale "Muttersprache" C beinhaltet. Mit allen Vor- und Nachteilen. man muss halt die Vorteile nutzen. Gegen einen GC-Schalter hätte ich nichts, warum nicht. Hätte Gegner und Befürworter wie z.B. "using std". Freiheit für den Programmierer.


Anmelden zum Antworten