_recalloc_dbg
Relokuje pole a inicializuje jeho prvky na 0 (pouze ladicí verze).
Syntaxe
void *_recalloc_dbg(
void *userData,
size_t num,
size_t size,
int blockType,
const char *filename,
int linenumber
);
Parametry
userData
Ukazatel na dříve přidělený blok paměti.
number
Požadovaný počet paměťových bloků
size
Požadovaná velikost každého bloku paměti (bajtů).
blockType
Požadovaný typ bloku paměti: _CLIENT_BLOCK
nebo _NORMAL_BLOCK
.
Informace o typech bloků přidělení a jejich použití najdete v tématu Typy bloků v haldě ladění.
filename
Ukazatel na název zdrojového souboru, který požadoval operaci přidělení nebo NULL
.
linenumber
Číslo řádku ve zdrojovém souboru, kde byla požadována operace přidělení nebo NULL
.
Parametry filename
jsou linenumber
k dispozici pouze v případech, kdy _recalloc_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 _recalloc
funkci.
Poznámky
_recalloc_dbg
je ladicí verze _recalloc
funkce. Pokud _DEBUG
není definováno, každé volání _recalloc_dbg
se sníží na volání _recalloc
. Blok _recalloc
paměti v základní haldě a _recalloc_dbg
relokujte ho, ale _recalloc_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í.
_recalloc_dbg
přeloží zadaný blok paměti o trochu více místa, než je požadovaná velikost (number
* size
), která 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. Část bloku uživatele je vyplněna hodnotou 0xCD a každá vyrovnávací paměť přepsání je vyplněna 0xFD.
_recalloc_dbg
nastaví errno
, ENOMEM
pokud přidělení paměti selže; EINVAL
je vráceno v případě, že množství potřebné paměti (včetně výše uvedené režie) překročí _HEAP_MAXREQ
. Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr
. _sys_errlist
_doserrno
errno
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 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 |
---|---|
_recalloc_dbg |
<crtdbg.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Knihovny
Ladění pouze verzí knihoven runtime jazyka C.