001
13.10.2011, 17:44 Uhr
Lensflare
|
Hi arcticlord,
ich habe hier vor einiger Zeit mal eine ähnliche Frage gestellt: www.fun-soft.de/showtopic.php?threadid=20656&
Also zunächst einmal braucht man "bla" nicht freizugeben. Im verlinkten Thread steht warum.
Außerdem ist es nicht sehr sinnvoll den Text im Destruktor der Klasse freizugeben, weil er ja nicht in der Klasse erzeugt wird, sondern außerhalb. Also besser wäre es, ihn dann auch außerhalb freizugeben.
Und da du ja C++ Code schreibst und nicht C Code, wäre es hier auch sehr empfehlenswert, die Klasse std::string aus der Standardbibliothek zu verwenden, statt char arrays. Das erspart dir viele Probleme.
Wenn du dennoch mit dynamisch (über new) erstellten char arrays arbeiten willst und deine klasse den text selbst löschen soll, dann sollte deine klasse den text, den sie über den konstruktor bekommt, mit z.B. strcpy() kopieren. dann kann sie ihn auch selbst wieder freigeben. Denn sonst, wenn sie nur den zeiger lagert, ist unklar ob sie ihn löschen darf, denn jemand anders könnte ja auch einen zeiger auf diesen text haben. Aber wie gesagt, lieber std::string nehmen ^^ -- Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten. (Emerson Pugh Trost) Dieser Post wurde am 13.10.2011 um 18:40 Uhr von Lensflare editiert. |