Sdílet prostřednictvím


_realloc_dbg

Relokuje zadaný blok paměti v haldě přesunutím nebo změnou velikosti bloku (pouze ladicí verze).

Syntaxe

void *_realloc_dbg(
   void *userData,
   size_t newSize,
   int blockType,
   const char *filename,
   int linenumber
);

Parametry

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

newSize
Požadovaná velikost pro relokovaný blok (bajty).

blockType
Požadovaný typ pro relokovaný blok: _CLIENT_BLOCK nebo _NORMAL_BLOCK.

filename
Ukazatel na název zdrojového souboru, který požadoval realloc operaci nebo NULL.

linenumber
Číslo řádku ve zdrojovém souboru, kde realloc byla operace požadována nebo NULL.

Parametry filename jsou linenumber k dispozici pouze v případech, kdy _realloc_dbg byla volána explicitně nebo byla definována konstanta preprocesoru _CRTDBG_MAP_ALLOC .

Vrácená hodnota

Po úspěšném dokončení tato funkce buď vrátí ukazatel na uživatelskou část relokovaného bloku paměti, zavolá novou funkci obslužné rutiny nebo vrátí NULL. Úplný popis chování vrácení najdete v následující části Poznámky. Další informace o tom, jak se používá nová funkce obslužné rutiny, najdete v této realloc funkci.

Poznámky

_realloc_dbg je ladicí verze realloc funkce. Pokud _DEBUG není definováno, každé volání _realloc_dbg se sníží na volání realloc. Blok realloc paměti v základní haldě a _realloc_dbg relokujte ho, ale _realloc_dbg zahrnuje několik funkcí ladění: vyrovnávací paměti na obou stranách bloku, které se mají otestovat na nevracení, parametr typu bloku pro sledování konkrétních typů přidělení a filename/linenumber informace k určení původu žádostí o přidělení.

_realloc_dbg přeloží zadaný blok paměti o trochu více místa, než je požadováno newSize. newSize může být větší nebo menší než velikost původně přiděleného bloku paměti. Další místo používá správce haldy ladění k propojení bloků paměti ladění a k poskytnutí aplikace informace hlavičky ladění a přepsání vyrovnávací paměti. Výsledkem skutečného umístění může být přesunutí původního bloku paměti do jiného umístění v haldě a změna velikosti bloku paměti. Pokud se blok paměti přesune, obsah původního bloku se přepíše.

_realloc_dbg nastaví errno , ENOMEM pokud přidělení paměti selže nebo pokud potřebné množství paměti (včetně výše uvedených režijních nákladů) překročí _HEAP_MAXREQ. Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

Informace o přidělování, inicializaci a správě bloků paměti ve verzi ladění základní haldy naleznete v podrobnostech haldy ladění CRT. Informace o typech bloků přidělení a jejich použití najdete v tématu Typy bloků v haldě ladění. Informace o rozdílech mezi standardními funkcemi haldy a ladicí verze naleznete v tématu Ladění verzí funkcí přidělení haldy.

Požadavky

Rutina Požadovaný hlavičkový soubor
_realloc_dbg <crtdbg.h>

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

Knihovny

Ladění pouze verzí knihoven runtime jazyka C.

Příklad

Podívejte se na příklad v _msize_dbg článku.

Viz také

Rutiny ladění
_malloc_dbg