Megosztás:


_recalloc

A realloc és a callockombinációja. Áttelepít egy tömböt a memóriában, és az elemeket 0-ra inicializálja.

Szintaxis

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

Paraméterek

memblock
Mutasson a korábban lefoglalt memóriablokkra.

number
Elemek száma.

size
Az egyes elemek bájtban megadott hossza.

Visszaadott érték

_recalloc egy void mutatót ad vissza az áttelepített (és esetleg áthelyezett) memóriablokkhoz.

Ha nincs elegendő memória a blokk adott méretre való kibontásához, az eredeti blokk változatlan marad, és NULL lesz visszaadva.

Ha a kért méret nulla, akkor a memblock által mutatott blokk felszabadul; a visszatérési érték NULL, a memblock pedig egy felszabadított blokkra mutat.

A visszaadott érték egy olyan tárterületre mutat, amely bármilyen típusú objektum tárolásához megfelelően igazodik. Ha nem voidtípusra szeretne mutatót kapni, használjon egy típust a visszatérési értéken.

Megjegyzések

A _recalloc függvény megváltoztatja a lefoglalt memóriablokk méretét. A memblock argumentum a memóriablokk elejére mutat. Ha memblockNULL, _recalloc ugyanúgy viselkedik, mint calloc, és egy új number * size bájtblokkot foglal le. Minden elem 0-ra van inicializálva. Ha memblock nem NULL, akkor egy előző hívás által visszaadott mutatónak kell lennie, amely calloc, mallocvagy realloc.

Mivel az új blokk új memóriahelyen lehet, a _recalloc által visszaadott mutató nem garantáltan a memblock argumentumon áthaladó mutató.

_recalloc errno ENOMEM állítja be, ha a memóriafoglalás meghiúsul, vagy ha a kért memóriamennyiség meghaladja _HEAP_MAXREQ. Erről és más hibakódokról további információt a errno, _doserrno, _sys_errlistés _sys_nerrcímű témakörben talál.

recalloc meghívja realloc, hogy a C++ _set_new_mode függvénnyel állítsa be az új kezelőmódot. Az új kezelő mód azt jelzi, hogy hiba esetén realloc-e meghívni az új kezelői rutint az _set_new_handleráltal beállított módon. Alapértelmezés szerint realloc nem hívja meg az új kezelői rutint a memória lefoglalásának sikertelensége esetén. Ezt az alapértelmezett viselkedést felülbírálhatja, így ha _recalloc nem tud memóriát lefoglalni, realloc ugyanúgy hívja meg az új kezelői rutint, mint a new operátor, ha ugyanazért az okból meghiúsul. Az alapértelmezett érték felülbírálásához hívja meg a

_set_new_mode(1);

a program korai szakaszában, vagy a NEWMODE.OBJ.

Ha az alkalmazás a C futásidejű kódtárak hibakeresési verziójával van társítva, _recalloc feloldja a _recalloc_dbg. További információ a halom kezeléséről a hibakeresési folyamat során: A CRT hibakeresési halom.

_recalloc __declspec(noalias) és __declspec(restrict)van megjelölve, ami azt jelenti, hogy a függvény garantáltan nem módosítja a globális változókat, és a visszaadott mutató nem lesz aliasos. További információ: noalias és restrict.

Alapértelmezés szerint ennek a függvénynek a globális állapota hatóköre az alkalmazásra terjed ki. Ennek a viselkedésnek a módosításához tekintse meg globális állapotot a CRT.

Követelmények

Rutin Kötelező fejléc
_recalloc <stdlib.h> és <malloc.h>

További kompatibilitási információkért lásd kompatibilitási.

Lásd még:

memóriafoglalási
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
Hivatkozás beállításai