_C_TS_malloc_debug() — 使用されるテラスペース・メモリー量の判別 (オプションのダンプおよび検査を使用)
フォーマット
#include <mallocinfo.h>
int _C_TS_malloc_debug(unsigned int dump_level, unsigned int verify_level,
struct _C_mallinfo_t *output_record, size_t sizeofoutput);
言語レベル
Extended
スレッド・セーフ
はい
説明
_C_TS_malloc_debug() 関数は、指定した output_record 構造体内で使用されるテラスペース・メモリーの量を判別し、その情報を戻します。 指定した dump_level パラメーターが 0 よりも大きい場合は、使用される内部メモリー構造体も stdout にダンプします。指定した verify_level パラメーターが 0 よりも大きい場合は、内部メモリー構造体に対する検査確認も行います。 検査が失敗すると、失敗を示すメッセージが stdout に生成されます。dump_level と verify_level の両方のパラメーターが 0 の場合、この関数は _C_TS_malloc_info 関数と同じ振る舞いをします。
次のマクロは、dump_level パラメーターに指定される <mallocinfo.h> インクルード・ファイル内で定義されます。
マクロ | 説明 |
---|---|
_C_NO_DUMPS | ダンプされる情報はありません |
_C_DUMP_TOTALS | 全体の合計および各チャンクの合計が出力されます |
_C_DUMP_CHUNKS | 各チャンクについての追加情報が出力されます |
_C_DUMP_NODES | 各チャンク内のすべてのノードの追加情報が出力されます |
_C_DUMP_TREE | 空きノードを追跡するために使用されるデカルト・ツリーの追加情報が出力されます |
_C_DUMP_ALL | 使用可能なすべての情報が出力されます |
次のマクロは、verify_level パラメーターに指定される <mallocinfo.h> インクルード・ファイル内で定義されます。
マクロ | 説明 |
---|---|
_C_NO_CHECKS | 検査確認は実行されません |
_C_CHECK_TOTALS | 合計が正確であるかどうかが検査されます |
_C_CHECK_CHUNKS | 各チャンクについて追加検査が実行されます |
_C_CHECK_NODES | 各チャンク内のすべてのノードについて追加検査が実行されます。 |
_C_CHECK_TREE | 空きノードを追跡するために使用されるデカルト・ツリーの追加検査が実行されます。 |
_C_CHECK_ALL | すべての検査が実行されます |
_C_CHECK_ALL_AND_ABORT | すべての検査が実行され、いずれかの検査が失敗すると、abort() 関数が呼び出されます。 |
注: この関数は、アプリケーション内のテラスペース・メモリー使用量の詳細デバッグ用です。
戻り値
正常に実行された場合、この関数は 0 を戻します。エラーが発生した場合、関数は負の値を戻します。
例
この例は、_C_TS_malloc_debug() から戻された情報を stdout に出力します。このプログラムは TERASPACE(*YES *TSIFC) でコンパイルされます。
#include <stdio.h>
#include <stdlib.h>
#include <mallocinfo.h>
int main (void)
{
_C_mallinfo_t info;
int rc;
void *m;
/* Allocate a small chunk of memory */
m = malloc(500);
rc = _C_TS_malloc_debug(_C_DUMP_TOTALS,
_C_NO_CHECKS,
&info, sizeof(info));
if (rc == 0) {
printf("_C_TS_malloc_debug successful\n");
}
else {
printf("_C_TS_malloc_debug failed (rc = %d)¥n", rc);
}
free(m);
}
/****************************************************
The output should be similar to:
total_bytes = 524288
allocated_bytes = 688
unallocated_bytes = 523600
allocated_blocks = 1
unallocated_blocks = 1
requested_bytes = 500
pad_bytes = 12
overhead_bytes = 176
Number of memory chunks = 1
Total bytes = 524288
Total allocated bytes = 688
Total unallocated bytes = 523600
Total allocated blocks = 1
Total unallocated blocks = 1
Total requested bytes = 500
Total pad bytes = 12
Total overhead bytes = 176
_C_TS_malloc_debug successful
****************************************************