_CrtIsValidHeapPointer
로컬 힙 (디버그 버전에만 해당)에 대 한 지정 된 포인터가 있는지 확인 합니다.
int _CrtIsValidHeapPointer(
const void *userData
);
매개 변수
- userData
할당 된 메모리 블록의 시작 부분에 대 한 포인터입니다.
반환 값
_CrtIsValidHeapPointer로컬 힙에서 포인터가 지정 된 경우 TRUE를 반환 합니다.그렇지 않으면 함수는 FALSE를 반환 합니다.
설명
_CrtIsValidHeapPointer 함수는 특정 메모리 주소를 로컬 힙 내 야 하는 데 사용 됩니다.로컬 힙 생성 하 고 C 런타임 라이브러리의 특정 인스턴스에 의해 관리 되는 힙을 참조 합니다.동적 연결 라이브러리 (DLL)에서 런타임 라이브러리에 정적 링크 포함 되어 있으면 런타임 힙 및 응용 프로그램의 로컬 힙에서의 독립적인 자체 힙 자체 인스턴스가 있습니다.때 _DEBUG 정의 되지 않은, 호출 하려면 _CrtIsValidHeapPointer 전처리 하는 동안 제거 됩니다.
이 함수는 TRUE 또는 FALSE 반환 하기 때문에 중 하나에 전달 될 수 있는 _ASSERT 간단한 디버깅 오류 처리 메커니즘을 만드는 매크로.지정한 주소가 로컬 힙 내에서 찾을 수 없는 경우 다음은 어설션 오류가 발생 합니다.
_ASSERTE( _CrtIsValidHeapPointer( userData ) );
방법에 대 한 자세한 내용은 _CrtIsValidHeapPointer 다른 디버그 함수 및 매크로를 사용할 수 있습니다 자세한 내용은 매크로 사용 하 여 확인 및 보고에 대 한.메모리 블록 할당, 초기화 및 기본 힙의 디버그 버전에서 관리 하는 방법에 대 한 자세한 내용은 참조 하십시오. 메모리 관리 및 디버그 힙.
요구 사항
루틴 |
필수 헤더 |
---|---|
_CrtIsValidHeapPointer |
<crtdbg.h> |
더 많은 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
라이브러리
디버그 버전의 C 런타임 라이브러리 만 합니다.
예제
// 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);
}
Output
my_pointer has read and write accessibility.
my_pointer is within the local heap.
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.