다음을 통해 공유


_heapchk

힙에서 일관성 확인을 실행합니다.

구문

int _heapchk( void );

반환 값

_heapchk는 Malloc.h에 정의된 다음 정수 매니페스트 상수 중 하나를 반환합니다.

반환 값 조건
_HEAPBADBEGIN 초기 헤더 정보가 잘못되었거나 찾을 수 없습니다.
_HEAPBADNODE 잘못된 노드가 검색되었거나 힙이 손상되었습니다.
_HEAPBADPTR 힙에 대한 포인터가 잘못되었습니다.
_HEAPEMPTY 힙이 초기화되지 않았습니다.
_HEAPOK 힙이 일치하는 것 같습니다.

또한 오류가 발생하는 경우 _heapchkerrnoENOSYS로 설정합니다.

설명

_heapchk 함수를 통해 힙의 최소 일관성을 확인하여 힙 관련 문제를 디버그할 수 있습니다. 운영 체제가 지원하지 _heapchk않는 경우(예: Windows 98) 함수가 반환 _HEAPOK 되고 설정 errno 됩니다 ENOSYS.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더 선택적 헤더
_heapchk <malloc.h> <errno.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// crt_heapchk.c
// This program checks the heap for
// consistency and prints an appropriate message.

#include <malloc.h>
#include <stdio.h>

int main( void )
{
   int  heapstatus;
   char *buffer;

   // Allocate and deallocate some memory
   if( (buffer = (char *)malloc( 100 )) != NULL )
      free( buffer );

   // Check heap status
   heapstatus = _heapchk();
   switch( heapstatus )
   {
   case _HEAPOK:
      printf(" OK - heap is fine\n" );
      break;
   case _HEAPEMPTY:
      printf(" OK - heap is empty\n" );
      break;
   case _HEAPBADBEGIN:
      printf( "ERROR - bad start of heap\n" );
      break;
   case _HEAPBADNODE:
      printf( "ERROR - bad node in heap\n" );
      break;
   }
}
OK - heap is fine

참고 항목

메모리 할당
_heapadd
_heapmin
_heapset
_heapwalk