====== calloc() ====== calloc ist definiert in der ''[[start|stdlib]]'', die in C über ''stdlib.h'', bzw. in C++ über ''cstdlib'' eingebunden wird. ===== Funktion ===== calloc() reserviert eine Array von Speicherblöcken. Hierbei wird die Größe eines einzelnen Speicherblocks angegeben, sowie die Anzahl der benötigten Speicherblöcke. Die Speicherblöcke liegen entsprechend eines Arrays direkt hintereinander. Es wird also die Anzahl der Blöcke mit der Größe eines einzelnen Blocks multipliziert und entsprechend Speicher mit malloc() angefordert. Zusätzlich wird der Speicherbereich initialisiert, so dass alle Bytes auf 0 gesetzt sind. Der Zeiger auf das erste Byte wird zurückgegeben oder NULL, falls kein Speicher alloziiert werden konnte. ===== Signatur ===== #include void * calloc ( size_t num, size_t size ); **num**: Anzahl der Speicherblöcke \\ **size**: Größe eines einzelnen Speicherblocks ===== Bemerkungen ===== Die Rückgabe ist ein Zeiger auf das erste Byte des zugeteilten Speicherblocks (oder [[NULL]], falls kein Speicher zugeteilt wurde) und wird als Datentyp (void *) geliefert. In C wird (void *) auf jeden beliebigen Zeigerdatentyp implizit konvertiert. In C++ muss [[c:cast|gecasted]] werden. Da viele C Programme mit C++ Compilern kompiliert werden, sollte der Typ inzwischen grundsätzlich als Cast vor den calloc()-Aufruf gesetzt werden. Sobald Arbeitsspeicher nicht mehr benötigt wird, muss er mit der Funktion [[free|free()]] wieder freigegeben werden. ===== Beispiel ===== #include int main( void ) { int * integers; integers = (int *)calloc( 10, sizeof( int ) ); // Ein Array von 10 Datensätzen in der Größe von jeweils einem Integers anfordern if( integers ) { /* .... */ free( integers ); return EXIT_SUCCESS; } return EXIT_FAILURE; } ===== siehe auch ===== [[free]], [[malloc]], [[realloc]]