staging.inyokaproject.org

Frage zu Strings in C++

Status: Gelöst | Ubuntu-Version: Ubuntu 21.10 (Impish Indri)
Antworten |

einwegflasche

Anmeldungsdatum:
28. August 2017

Beiträge: 12

Ich versuche seit einiger Zeit mich in C++ einzuarbeiten. Und jetzt, wo ich mich an eigenen Klassen versuche, kommen Fragen auf, zu denen ich keine Antwort finde.

Die Beispiele in den Büchern sind immer sehr knapp gehalten. Sie funktionieren auch. Aber nirgends habe ich gesehen, dass ein std::string irgendwo mit delete wieder freigegeben wurde. Müsste das nicht zu einem Speicherleck führen?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Der Speicher wird natürlich freigegeben. Du kannst Dir die Implementierung anschauen. Auf meinem System steckt die in /usr/include/c++/9/bits/basic_string.h. Wenn Du nach ~basic_string suchst, findest Du den Destruktor. Dann kannst Du Dich von da rückwärts hangeln.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Das Konzept dahinter heißt RAII - damit kann man sich viel Ärger sparen, den man hätte, wenn man immer selbst mit new bzw. malloc herumwerkeln würde - sobald der Scope endet, wird das Objekt zerstört und wenn es in seinem Destruktor die Ressourcen wieder korrekt frei gibt (das ist immer dort notwendig wo man sich z.B. mit new oder malloc Speicher reserviert hat), muss man sich als Nutzer der Klasse nicht darum kümmern das von Hand zu machen.

einwegflasche

(Themenstarter)

Anmeldungsdatum:
28. August 2017

Beiträge: 12

Vielen Dank, dann bin ich beruhigt.

Darauf hätte das Buch "Der C++ Programmierer" auch mal hinweisen können. Den Begriff RAII habe ich da jetzt auch gefunden. Ganze 10 Zeilen allgemeiner Text im Anhang.

Antworten |