_heapchk

ヒープに対して整合性チェックを実行します。

構文

int _heapchk( void );

戻り値

_heapchk は、Malloc.h に定義されている次の整数のマニフェスト定数のいずれかを返します。

戻り値 条件
_HEAPBADBEGIN 初期ヘッダー情報が正しくないか、見つかりません。
_HEAPBADNODE 不適切なノードが検出されたか、ヒープが破損しています。
_HEAPBADPTR ヒープへのポインターが無効です。
_HEAPEMPTY ヒープが初期化されていません。
_HEAPOK ヒープは一貫性があると思われます。

また、エラーが発生した場合、 _heapchkerrnoENOSYSに設定します。

解説

_heapchk 関数を使用すると、ヒープの最小限の一貫性をチェックしてヒープ関連の問題をデバッグできます。 オペレーティング システムが _heapchk (Windows 98 など) をサポートしていない場合、関数は _HEAPOK を返し、 errnoENOSYSに設定します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

要件

ルーチンによって返される値 必須ヘッダー オプション ヘッダー
_heapchk <malloc.h> <errno.h>

互換性の詳細については、「 Compatibility」を参照してください。

// 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