Speicherhandling

In C wird Speicher mit den Funktionen malloc() und free() angefordert, bzw. freigegeben. In C dürfen void-Zeiger auf einen beliebigen Typ ohne Cast zugewiesen werden. In C++ darf man das sinnvollerweise nicht mehr. Beide Funktionen arbeiten mit void *, so dass man malloc() in C++ erst auf den jeweiligen Datentyp casten muss und man die benötigte Größe selbst berechnen muss:

int * pInt = (int *) malloc( sizeof( int ) );
...
free( pInt );

new und delete

Der Operator new geht das Problem an und liefert einen Zeiger auf den richtigen Datentyp zurück.

int * pInt = new int;
...
delete pInt;

Ein int ist 4 Bytes ( bzw. sizeof(int) Bytes ) groß, dies berechnet new im Gegensatz zu malloc nun selbst.

Arrays

Arrays werden ebenfalls mit new und delete angefordert. Dennoch gibt es hier einen Unterschied: Es wird ein new [] verwendet und entsprechend wird auch ein delete [] verwendet.

int * pInt = new int[10];
...
delete [] pInt;

Hierbei ist wichtig, dass Arrays mit delete [] freigegeben werden müssen. Dies wird später bei der Verwendung von Klassen notwendig.