Freigeben über


calloc

Ordnet ein Array im Arbeitsspeicher mit den Elementen zu, die auf 0 initialisiert werden.

void *calloc( 
   size_t num,
   size_t size 
);

Parameter

  • num
    Anzahl der Elemente.

  • size
    Länge in Bytes jedes Elements.

Rückgabewert

calloc gibt einen Zeiger auf den reservierten Platz zurück. Der Speicherplatz, der auf den mit dem Rückgabewert gezeigt wird, wird sichergestellt, zum Speichern eines beliebigen Typs Objekt ordnungsgemäß ausgerichtet sind. Um einen Zeiger auf einen anderen Typ als void zu erhalten, verwenden Sie eine Typumwandlung für den Rückgabewert.

Hinweise

Die calloc ordnet Funktion Speicherplatz für ein num - Array Elemente, Länge jedes von Bytes size zu. Jedes Element wird 0 initialisiert.

calloc setzt errno auf ENOMEM, wenn eine Speicherbelegung fehlschlägt oder wenn der benötigte Speicherplatz größer ist als _HEAP_MAXREQ. Informationen hierzu und andere Fehlercodes, finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

calloc Ruft malloc auf, um der Funktion C++ _set_new_mode verwenden, um den neuen Handlermodus festzulegen. Der neue Handlermodus gibt an, ob bei einem Fehler malloc die neue Handlerroutine aufgerufen werden soll, wie dies von _set_new_handler festgelegt ist. Standardmäßig ruft malloc bei einem Speicherbelegungsfehler nicht die neue Handlerroutine auf. Sie können dieses Standardverhalten überschreiben, sodass, wenn calloc Speicher nicht belegen kann,malloc die neue Handlerroutine genauso aufruft wie der new-Operator, wenn dieser aus demselben Grund fehlschlägt. Um den Standardwert zu überschreiben, rufen Sie

_set_new_mode(1)

rechtzeitig im Programm auf oder stellen eine Verknüpfung mit NEWMODE.OBJ (siehe Linkoptionen) her.

Wenn die Anwendung mit einer Debugversion der C-Laufzeitbibliotheken verknüpft ist, wird calloc von _calloc_dbg auf. Weitere Informationen dazu, wie der Heap während des Debuggingsprozesses verwaltet wird, finden Sie unter Der CRT-Debugheap.

calloc ist als __declspec(noalias) gekennzeichnet und __declspec(restrict) heißt, dass die Funktion, die gewährleistet sind globale Variablen nicht zu ändern und der zurückgegebene Zeiger nicht von Alias-. Weitere Informationen finden Sie unter noalias und Einschränken ein.

Anforderungen

Routine

Erforderlicher Header

calloc

<stdlib.h> und <malloc.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

// crt_calloc.c
// This program uses calloc to allocate space for
// 40 long integers. It initializes each element to zero.
 
#include <stdio.h>
#include <malloc.h>

int main( void )
{
   long *buffer;

   buffer = (long *)calloc( 40, sizeof( long ) );
   if( buffer != NULL )
      printf( "Allocated 40 long integers\n" );
   else
      printf( "Can't allocate memory\n" );
   free( buffer );
}
  

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Speicherbelegung

Frei

malloc

realloc