Lektion 39:

new und delete

  Bisher haben wir nur Speicher reserviert, indem wir eine entsprechende Variable definiert haben. Und wenn die Variable verschwindet, dann ist der Speicher auch weg. Manchmal ist das nicht gewollt. Dafür gibt es den operator new. new legt auf dem heap (Freispeicher) ein Objekt an und gibt die Adresse dieses Objekts zurück. Dieser Speicher wird wieder freigegegeben durch delete.

#include <iostream.h>
void main()
{
   int *pi=new int;// Speicherplatz für einen int anlegen
   *pi=5;// 5 reinschreiben
   cout<<*pi<<endl;// Ausgabe: 5
   delete pi;// Speicherplatz löschen
   pi=new int;// nochmal Speicherplatz anlegen
   int i=6;// eine normale integer-Variable
   cout<<*pi<<endl;// Ausgabe: irgend eine Zahl, bei mir -842150451
   pi=&i;// pi ist Adresse von i
   // Jetzt ist die Adresse des int auf dem heap verloren. Er kann
   // nicht mehr mit delete freigegeben werden!!!
   cout<<*pi<<endl;// Ausgabe: 6
   delete pi;// Fehler!!! Die Variable i kann so nicht gelöscht werden!
};


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00