calloc()

calloc ist definiert in der 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 <stdlib.h>
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 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() wieder freigegeben werden.

Beispiel

#include <stdlib.h>
 
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