_CrtIsValidHeapPointer
Ověří, zda je zadaný ukazatel místní haldy (pouze ladicí verze).
int _CrtIsValidHeapPointer(
const void *userData
);
Parametry
- userData
Ukazatel na začátek bloku přidělené paměti.
Vrácená hodnota
_CrtIsValidHeapPointerVrátí hodnotu PRAVDA, pokud je zadané ukazatel místní haldy.Jinak vrátí funkce hodnotu FALSE.
Poznámky
_CrtIsValidHeapPointer Funkce se používá, aby konkrétní paměťové adresy v rámci místní haldy.Místní halda odkazuje haldy, vytvoří a spravuje konkrétní instanci C Runtime library.Dynamická knihovna (DLL) obsahuje odkaz Statická knihovna run-time, má vlastní instanci haldy spuštění a proto vlastní haldy nezávislé místní haldy aplikace.Při _DEBUG není definována, volání do _CrtIsValidHeapPointer jsou odebrány při úpravě před zpracováním.
Protože tato funkce vrací TRUE nebo FALSE, mohou být předány do jednoho z _ASSERT makra k vytvoření jednoduchého zpracování mechanismus ladění chyb.V následujícím příkladu způsobí nezdaru při Pokud zadaná adresa není umístěn v rámci místní haldy:
_ASSERTE( _CrtIsValidHeapPointer( userData ) );
Další informace o _CrtIsValidHeapPointer lze použít jiné funkce ladění a makra, viz Použití makra pro ověření a hlášení.Informace o jak jsou bloky paměti přidělené, inicializován a spravuje v ladicí verzi základní haldy Správa paměti a ladění haldy.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_CrtIsValidHeapPointer |
<crtdbg.h> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Knihovny
Ladění verze C Runtime knihovny pouze.
Příklad
// crt_isvalid.c
/*
* This program allocates a block of memory using _malloc_dbg
* and then tests the validity of this memory by calling
* _CrtIsMemoryBlock,_CrtIsValidPointer, and _CrtIsValidHeapPointer.
*/
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <crtdbg.h>
#define TRUE 1
#define FALSE 0
int main( void )
{
char *my_pointer;
/*
* Call _malloc_dbg to include the filename and line number
* of our allocation request in the header information
*/
my_pointer = (char *)_malloc_dbg( sizeof(char) * 10,
_NORMAL_BLOCK, __FILE__, __LINE__ );
// Ensure that the memory got allocated correctly
_CrtIsMemoryBlock((const void *)my_pointer, sizeof(char) * 10,
NULL, NULL, NULL );
// Test for read/write accessibility
if (_CrtIsValidPointer((const void *)my_pointer,
sizeof(char) * 10, TRUE))
printf("my_pointer has read and write accessibility.\n");
else
printf("my_pointer only has read access.\n");
// Make sure my_pointer is within the local heap
if (_CrtIsValidHeapPointer((const void *)my_pointer))
printf("my_pointer is within the local heap.\n");
else
printf("my_pointer is not located within the local"
" heap.\n");
free(my_pointer);
}
Výsledek
my_pointer has read and write accessibility.
my_pointer is within the local heap.
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.