Sdílet prostřednictvím


_recalloc

Kombinace a realloc calloc. Relokuje pole v paměti a inicializuje jeho prvky na 0.

Syntaxe

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

Parametry

memblock
Ukazatel na dříve přidělený blok paměti

number
Počet prvků

size
Délka v bajtech každého prvku

Vrácená hodnota

_recallocvoid vrátí ukazatel na relokovaný (a pravděpodobně přesunutý) blok paměti.

Pokud není k dispozici dostatek paměti pro rozšíření bloku na danou velikost, původní blok zůstane beze změny a NULL vrátí se.

Pokud je požadovaná velikost nula, blok, na který memblock odkazuje, se uvolní; návratová hodnota je NULLa memblock vlevo ukazuje na uvolněný blok.

Návratová hodnota odkazuje na prostor úložiště, který je vhodně zarovnaný pro úložiště libovolného typu objektu. Pokud chcete získat ukazatel na jiný typ než void, použijte přetypování typu na návratovou hodnotu.

Poznámky

Funkce _recalloc změní velikost přiděleného bloku paměti. Argument memblock odkazuje na začátek bloku paměti. Pokud memblock ano NULL, _recalloc chová se stejným způsobem jako calloc a přiděluje nový blok number * size bajtů. Každý prvek je inicializován na hodnotu 0. Pokud memblock není NULL, měl by to být ukazatel vrácený předchozím voláním calloc, mallocnebo realloc.

Vzhledem k tomu, že nový blok může být v novém umístění paměti, není zaručeno, že ukazatel vrácený _recalloc ukazatelem bude předán prostřednictvím argumentu memblock .

_recalloc nastaví errno , ENOMEM pokud přidělení paměti selže nebo pokud požadovaná velikost paměti překročí _HEAP_MAXREQ. Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

recalloc volání realloc pro použití funkce C++ _set_new_mode k nastavení nového režimu obslužné rutiny. Nový režim obslužné rutiny označuje, zda při selhání realloc je volání nové rutiny obslužné rutiny nastavena ._set_new_handler Ve výchozím nastavení nevolá rutinu nové obslužné rutiny při realloc selhání přidělení paměti. Toto výchozí chování můžete přepsat tak, aby při _recalloc selhání přidělení paměti realloc volaly novou rutinu obslužné rutiny stejným způsobem jako new operátor v případě selhání z stejného důvodu. Pokud chcete přepsat výchozí nastavení, zavolejte

_set_new_mode(1);

v rané fázi programu nebo propojení s NEWMODE.OBJ.

Pokud je aplikace propojena s ladicí verzí knihoven runtime jazyka C, _recalloc přeloží na _recalloc_dbg. Další informace o správě haldy během procesu ladění naleznete v části Haldy ladění CRT.

_recalloc je označen a __declspec(noalias) __declspec(restrict), což znamená, že funkce zaručuje, že nebude upravovat globální proměnné a že vrácený ukazatel není aliasován. Další informace najdete v tématech noalias a restrict.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor
_recalloc <stdlib.h> a <malloc.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Viz také

Přidělení paměti
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
Možnosti propojení