_heapset
ヒープの最小限の一貫性をチェックし、空きエントリを指定した値に設定します。
重要
この関数は廃止されています。 Visual Studio 2015 以降、CRT で使用できません。
構文
int _heapset(
unsigned int fill
);
パラメーター
fill
充填文字。
戻り値
_heapset
は、Malloc.h に定義されている次の整数のマニフェスト定数のいずれかを返します。
値 | 説明 |
---|---|
_HEAPBADBEGIN |
初期ヘッダー情報が無効または見つかりません。 |
_HEAPBADNODE |
ヒープが破損しているか、不適切なノードが見つかりました。 |
_HEAPEMPTY |
ヒープが初期化されていません。 |
_HEAPOK |
ヒープは一貫性があると思われます。 |
また、エラーが発生した場合、 _heapset
は errno
を ENOSYS
に設定します。
解説
_heapset
関数は、誤って上書きされた空きメモリの場所またはノードを示します。
_heapset
は、ヒープの最小限の一貫性をチェックし、ヒープの空きエントリの各バイトに fill
値を設定します。 この既知の値は、空きノードがあるヒープのメモリ位置を示すとともに、解放されたメモリに誤って書き込まれたデータを含むのはどれかを示します。 オペレーティング システムが _heapset
(Windows 98 など) をサポートしていない場合、関数は _HEAPOK
を返し、 errno
を ENOSYS
に設定します。
要件
ルーチンによって返される値 | 必須ヘッダー | オプション ヘッダー |
---|---|---|
_heapset |
<malloc.h> | <errno.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」をご覧ください。
例
// crt_heapset.c
// This program checks the heap and
// fills in free entries with the character 'Z'.
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int heapstatus;
char *buffer;
if( (buffer = malloc( 1 )) == NULL ) // Make sure heap is
exit( 0 ); // initialized
heapstatus = _heapset( 'Z' ); // Fill in free entries
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;
}
free( buffer );
}
OK - heap is fine