Sdílet prostřednictvím


_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, filenamenebo 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í FALSEa 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.

Viz také

Rutiny ladění