| 2 |
Ich möchte noch hinzufügen, dass "nicht zu brauchen" hier zu schwach ist. Man darf delete nicht mit der Adresse eines Stack-Objekts aufrufen. Wenn's nicht direkt kracht, weil z.B. der Destruktor zweimal aufgerufen wird, gibt's zumindest undefiniertes Verhalten.
– andre 07.09.09
|
|
| 1 |
Danke für die Ergänzung :)
Ich hoffe es gab wegen meiner Wortwahl keine Missverständnisse – Shelling 08.09.09
|
MeinObject mo("abc"); auf dem Stack alloziert NIE delete aufrufen (der Destruktor kümmert sich darum)MeinObject* mo = new MeinObject("abc"); auf dem Heap alloziert -> mit delete mo;freigeben (nicht Ausnahmesicher! Lieber std::auto_ptr verwenden)
MeinObject* mo = new MeinObject[10];array auf dem Heap -> mit
delete [] mo;freigeben ohne eckige Klammern wird sonst nur den Destruktor fürs erste Object aufgerufen was ein Speicherleck hervorrufen könnte!