_recalloc
Een combinatie van realloc
en calloc
. Zet een matrix in het geheugen opnieuw in het geheugen en initialiseert de elementen ervan in 0.
Syntaxis
void *_recalloc(
void *memblock,
size_t num,
size_t size
);
Parameters
memblock
Aanwijzer naar eerder toegewezen geheugenblok.
number
Aantal elementen.
size
Lengte in bytes van elk element.
Retourwaarde
_recalloc
retourneert een void
aanwijzer naar het opnieuw toegewezen geheugenblok (en mogelijk verplaatst).
Als er onvoldoende geheugen beschikbaar is om het blok uit te breiden tot de opgegeven grootte, blijft het oorspronkelijke blok ongewijzigd en wordt NULL
geretourneerd.
Als de aangevraagde grootte nul is, wordt het blok dat door memblock
wordt aangegeven, vrijgemaakt; de retourwaarde is NULL
en memblock
wijst naar een vrijgemaakt blok.
De retourwaarde verwijst naar een opslagruimte die geschikt is voor opslag van elk type object. Als u een aanwijzer wilt ophalen naar een ander type dan void
, gebruikt u een type cast op de retourwaarde.
Opmerkingen
De functie _recalloc
wijzigt de grootte van een toegewezen geheugenblok. Het argument memblock
verwijst naar het begin van het geheugenblok. Als memblock
is NULL
, gedraagt _recalloc
zich op dezelfde manier als calloc
en wijst een nieuw blok van number
* size
bytes toe. Elk element wordt geïnitialiseerd tot 0. Als memblock
niet is NULL
, moet deze een aanwijzer zijn die wordt geretourneerd door een eerdere aanroep naar calloc
, malloc
of realloc
.
Omdat het nieuwe blok zich op een nieuwe geheugenlocatie kan bevinden, wordt de aanwijzer die door _recalloc
wordt geretourneerd, niet gegarandeerd de aanwijzer doorgegeven via het argument memblock
.
_recalloc
stelt errno
in op ENOMEM
als de geheugentoewijzing mislukt of als de gevraagde hoeveelheid geheugen groter is dan _HEAP_MAXREQ
. Zie errno
, _doserrno
, _sys_errlist
en _sys_nerr
voor meer informatie over deze en andere foutcodes.
recalloc
roept realloc
aan om de functie C++ _set_new_mode
te gebruiken om de nieuwe handlermodus in te stellen. De nieuwe handlermodus geeft aan of bij fouten realloc
de nieuwe handlerroutine moet aanroepen zoals ingesteld door _set_new_handler
. Standaard roept realloc
de nieuwe handlerroutine niet aan bij fout bij het toewijzen van geheugen. U kunt dit standaardgedrag overschrijven, zodat wanneer _recalloc
geen geheugen toewijst, realloc
de nieuwe handlerroutine op dezelfde manier aanroept als de new
-operator doet wanneer deze om dezelfde reden mislukt. Als u de standaardwaarde wilt overschrijven, roept u aan
_set_new_mode(1);
vroeg in het programma of maak een koppeling met NEWMODE.OBJ.
Wanneer de toepassing is gekoppeld aan een foutopsporingsversie van de runtimebibliotheken van C, wordt _recalloc
omgezet in _recalloc_dbg
. Zie De HET-foutopsporingvoor meer informatie over hoe de heap wordt beheerd tijdens het foutopsporingsproces.
_recalloc
is gemarkeerd als __declspec(noalias)
en __declspec(restrict)
, wat betekent dat de functie gegarandeerd geen globale variabelen kan wijzigen en dat de geretourneerde aanwijzer geen alias heeft. Zie noalias
en restrict
voor meer informatie.
De globale status van deze functie is standaard gericht op de toepassing. Zie Globale status in de CRT-om dit gedrag te wijzigen.
Eisen
Routine | Vereiste header |
---|---|
_recalloc |
<stdlib.h> en <malloc.h> |
Zie Compatibiliteitsvoor meer compatibiliteitsinformatie.
Zie ook
geheugentoewijzing
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
koppelingsopties