Delen via


_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 NULLen 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, mallocof 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_errlisten _sys_nerrvoor 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 restrictvoor 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