다음을 통해 공유


_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. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

루틴을 디버깅 합니다.