Freigeben über


_recalloc

Eine Kombination von realloc und calloc.Teilt ein Array im Arbeitsspeicher neu und initialisiert deren Elemente bis 0.

void *_recalloc( 
   void *memblock
   size_t num,
   size_t size 
);

Parameter

  • memblock
    zuvor Zeiger auf den belegten Speicherblock.

  • num
    Anzahl von Elementen.

  • size
    Länge in Byte) der einzelnen Elemente.

Rückgabewert

_recalloc gibt einen Zeiger auf den neu void zugeteilten (und ggf. verschoben) Speicherblock zurück.

Wenn nicht genügend verfügbaren Arbeitsspeicher vorhanden ist, um die angegebene Größe des Blocks zu erweitern, wird der ursprüngliche Block unverändert belassen, und NULL wird zurückgegeben.

Wenn die angeforderte Größe (null) ist, wird der Block, der durch memblock gezeigte freigegeben. NULLund der Rückgabewert ist memblock ist Left an einem freigegebenen - Block zeigen.

Der Rückgabewert zeigt auf ein garantiert der Speicherplatz zum Speichern eines beliebigen Typs Objekt ordnungsgemäß ausgerichtet werden soll.Um einen Zeiger auf einen anderen Typ als voidabzurufen, verwenden Sie eine Typumwandlung im Rückgabewert.

Hinweise

Die _recalloc-Funktion ändert die Größe eines belegten Speicherblocks.Das memblock-Argument verweist auf den Anfang des Speicherblocks.Wenn memblockNULL_recalloc ist, verhält sich genauso wie calloc und ordnet einen neuen Block num * size Bytes.Jedes Element wird mit 0 initialisiert.Wenn memblock nicht NULList, sollte ein Zeiger sein, der durch einen vorherigen Aufruf von calloc, mallocoder realloczurückgegeben wurde.

Da der neuen Block in einer neuen Speicheradresse werden kann, wird der Zeiger, der von _recalloc zurückgegeben wird, nicht gewährleistet, dass der Zeiger sein, der vom memblock-Argument übergeben wird.

_recalloc legt diesen fest ENOMEM zu errno , wenn die Speicherbelegung fehlschlägt, oder wenn der angeforderte Arbeitsspeicher _HEAP_MAXREQüberschreitet.Weitere Informationen zu diesem und anderen Fehlercodes finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

recalloc Aufrufe realloc um die Funktion C++ _set_new_mode neuen Handler verwenden, um den Modus festzulegen.Der neue Modus gibt an, ob die Handler auf Fehler, realloc , die neue Handler routine legen Sie z. B. durch _set_new_handleraufzurufen ist.Standardmäßig ruft realloc nicht die neuen Handler routine bei Bindungsfehlern Speicher belegen.Sie können dieses Standardverhalten überschreiben, damitrecalloc Speicher belegen, wenn _kann nicht realloc die neue Handler routine genauso aufgerufen wird, dass der Operator new , wenn sie aus demselben Grund fehlschlägt.Um den Standardwert überschreiben, rufen

_set_new_mode(1)

früh im Programm oder eine Verknüpfung mit NEWMODE.OBJ.

Wenn die Anwendung mit einer Debugversion der C-Laufzeitbibliotheken verknüpft ist, wird _recalloc_dbgzurecalloc _auf.Weitere Informationen darüber, wie der Heap während des Debuggens Prozesses verwaltet wird, finden Sie unter Der CRT-Debugheap.

_recalloc ist als __declspec(noalias) und __declspec(restrict)und bedeutet, dass die Funktion nicht garantiert globale Variablen ändern und dass der zurückgegebene Zeiger nicht mit einem Alias versehene.Weitere Informationen finden Sie unter noalias und Beschränken Sie ein.

Anforderungen

Routine

Erforderlicher Header

_recalloc

<stdlib.h> und <malloc.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Speicherbelegung

_recalloc_dbg

_aligned_recalloc

_aligned_offset_recalloc

Frei

Konzepte

Link-Optionen