Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.