next up previous contents index
Next: C++ Kommentare benutzen Up: 50 Ways to Improve Previous: iostream.h statt stdio.h

new und delete statt malloc und free

      malloc und free wissen nichts über die Konstruktion und Destruktion von Objekten:

    class String
    { char *value;
      public:
      String(const char* val=0);
      ~String();
    };
    String* array1=(String*) 
            malloc(10*sizeof(String));
    String* array2 = new String[10];

array1 zeigt auf einen Speicherbereich für 10 Strings.

array2 zeigt auf einen Speicherbereich mit 10 vollständig konstruierten Strings.

Ähnlich verläuft es bei der Speicherfreigabe:

    free(array1);
    delete [] array2;

free gibt den Speicher für die 10 Strings wieder frei. Die Stringobjekte, die evtl. selbst wieder Speicher allokiert haben, werden nicht zerstört.  

delete [] hat genau den gewünschten Effekt.

tex2html_wrap5277


next up previous contents index
Next: C++ Kommentare benutzen Up: 50 Ways to Improve Previous: iostream.h statt stdio.h

Peter Pfahler, 1997