_CrtIsMemoryBlock
Ověřuje, že zadaný blok paměti je v místní haldě a že má platný identifikátor bloku haldy ladění (pouze ladicí verze).
Syntaxe
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
Parametry
userData
Ukazatel na začátek bloku paměti, který chcete ověřit.
size
Velikost zadaného bloku (v bajtech).
requestNumber
Ukazatel na číslo přidělení bloku nebo NULL
.
filename
Ukazatel na název zdrojového souboru, který požadoval blok nebo NULL
.
lineNumber
Ukazatel na číslo řádku ve zdrojovém souboru nebo NULL
.
Vrácená hodnota
_CrtIsMemoryBlock
vrátí TRUE
, pokud je zadaný blok paměti umístěn v místní haldě a má platný identifikátor typu bloku haldy ladění; jinak funkce vrátí FALSE
.
Poznámky
Funkce _CrtIsMemoryBlock
ověří, že se zadaný blok paměti nachází v místní haldě aplikace a zda má platný identifikátor typu bloku. Tuto funkci lze také použít k získání čísla pořadí přidělení objektu a názvu zdrojového souboru nebo čísla řádku, kde bylo původně požadováno přidělení bloku paměti. Hodnota, která neníNULL
předána v objektu requestNumber
, filename
nebo lineNumber
parametr způsobí _CrtIsMemoryBlock
nastavení parametru na hodnotu v hlavičce ladění bloku paměti, pokud najde blok v místní haldě. Pokud _DEBUG
není definováno, volání, která _CrtIsMemoryBlock
se mají odebrat během předběžného zpracování.
Pokud _CrtIsMemoryBlock
selže, vrátí FALSE
a výstupní parametry se inicializují na výchozí hodnoty: requestNumber
a lineNumber
jsou nastaveny na hodnotu 0 a filename
jsou nastaveny na NULL
.
Vzhledem k tomu, že tato funkce vrací TRUE
nebo FALSE
, může být předána do jednoho z _ASSERT
maker a vytvořit základní mechanismus zpracování chyb ladění. Následující příklad způsobí selhání kontrolního výrazu, pokud zadaná adresa není umístěna v místní haldě:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Další informace o tom, jak _CrtIsMemoryBlock
se dají použít s dalšími ladicími funkcemi a makry, najdete v tématu Makra pro vytváření sestav. 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.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_CrtIsMemoryBlock |
<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 _CrtIsValidHeapPointer
článku.