다음을 통해 공유


_CrtIsValidPointer

포인터가 null이 아닌지 확인합니다. Visual Studio 2010 이전 버전의 C 런타임 라이브러리에서 지정된 메모리 범위가 읽기 및 쓰기(디버그 버전에만 해당)에 유효한지 확인합니다.

구문

int _CrtIsValidPointer(
   const void *address,
   unsigned int size,
   int access
);

매개 변수

address
유효성 테스트를 위한 메모리 범위의 시작 부분을 가리킵니다.

size
지정된 메모리 범위의 크기입니다(바이트).

access
메모리 범위 확인을 위한 읽기/쓰기 접근성입니다.

반환 값

_CrtIsValidPointer 지정된 포인터가 null이 아니면 반환 TRUE 됩니다. Visual Studio 2010 이전의 CRT 라이브러리 버전에서 메모리 범위가 지정된 작업 또는 작업에 유효한지 여부를 반환 TRUE 합니다. 그렇지 않으면 FALSE를 반환합니다.

설명

Visual Studio 2010 이상 버전의 size CRT 라이브러리에서 매개 변수 및 access 매개 변수는 무시되며 _CrtIsValidPointer 지정된 address 항목이 null이 아닌지 확인합니다. 이 테스트는 직접 수행하기 쉽기 때문에 이 함수를 사용하지 않는 것이 좋습니다. Visual Studio 2010 이전 버전에서 이 함수는 address에서 시작하는 메모리 범위와 size바이트에 대한 확장이 지정된 액세스 가능 작업에 유효한지 확인합니다. 이 값을 TRUE설정하면 access 메모리 범위가 읽기 및 쓰기 모두에 대해 확인됩니다. 이 경우 access FALSE메모리 범위는 읽기 전용으로 유효성을 검사합니다. _DEBUG가 정의되지 않은 경우 전처리 중에 _CrtIsValidPointer에 대한 호출이 제거됩니다.

이 함수는 반환 TRUE 되거나 FALSE매크로 중 _ASSERT 하나에 전달되어 기본 디버깅 오류 처리 메커니즘을 만들 수 있습니다. 다음 예제에서는 메모리 범위가 읽기 및 쓰기 작업 모두에 유효하지 않은 경우 어설션 실패를 발생합니다.

_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );

다른 디버그 함수 및 매크로와 함께 사용할 수 있는 방법에 _CrtIsValidPointer 대한 자세한 내용은 보고용 매크로를 참조하세요. 기본 힙의 디버그 버전에서 메모리 블록을 할당, 초기화 및 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙 세부 정보를 참조 하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer 는 Microsoft 확장입니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.

라이브러리

C 런타임 라이브러리의 디버그 버전만 해당됩니다.

예시

문서의 예제를 참조하세요 _CrtIsValidHeapPointer .

참고 항목

디버그 루틴