====== Speicherhandling ====== In C wird Speicher mit den Funktionen [[c:lib:stdlib:malloc()]] und [[c:lib:stdlib: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 [[c:lib:stdlib: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 [[cpp:class:start|Klassen]] notwendig.