Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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