Diskussion:C++-Programmierung: Speicherverwaltung
Abschnitt hinzufügenErscheinungsbild
Letzter Kommentar: vor 17 Jahren von RokerHRO in Abschnitt Kritikpunkte
Kritikpunkte
[Bearbeiten]Auch hier möchte ich meine Kritikpunkte anbringen:
- Speicherverwaltung "auf dem Stack, auf dem Heap, vom Compiler im Programm verbaut" ist - gelinde gesagt - Unfug. Der Sprachstandard spricht von "automatic storage", "dynamic storage" und "static storage". Wir sollten uns hier an die offiziellen Begriffe, gegebenenfalls sinnvoll eingedeutscht, halten. Mit diesen Begriffen ist vor allem die Lebensdauer der Variablen gemeint, nicht der Ort im Speicher, wo sie angelegt werden, da dies vollkommen plattformabhängig ist und den Programmierer auch gar nichts angeht. Es ist im Standard z.B. nirgends gefordert, dass Objekte mit "automatic storage" auf dem (CPU-)Stack angelegt werden (schon allein deshalb, weil das auf einigen Architekturen gar nicht machbar ist).
- Der Präprozessor kennt keine Variablen, nur Makros und der Linker kennt nur Symbole. Die sollten hier aber nicht erwähnt werden, da sie mit der Speicherverwaltung von C++ nichts zu tun haben.
- Die Schlüsselwörter
auto
undregister
kann man getrost ins Kuriositätenkabinett verschieben, sie sind veraltet, man braucht sie nicht (mehr), man braucht sie vor allem nicht in einem Lehrbuch zu erwähnen, allenfalls als Fußnote. Übrigens: das Schlüsselwortauto
soll im nächsten C++-Standard sogar eine neue, sinnvollere Bedeutung bekommen. Da verwirrt es nur, wenn hier die bisherige Bedeutung zu sehr breitgetreten wird. - Unter "Heap" versteht man im C++-Standard eine besondere Datenstruktur (siehe
std::make_heap()
), nicht den Freispeicherbereich, der etwa unter Pascal "Heap" genannt wird. - Was mit "durch den Compiler verbaut" gemeint ist, ist irgendwie unklar. Falls damit Konstanten und Literale gemeint sind, soll man das auch sagen. :-)