フォーマット
#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() の使用例
この例は、_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 ****************************************************
関連情報