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

互換性の詳細については、「 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