_C_Quickpool_Debug() — 高速プール・メモリー・マネージャー特性の変更
形式
#include <stdlib.h>
_C_Quickpool_Debug_T _C_Quickpool_Debug(_C_Quickpool_Debug_T *newval);言語レベル
拡張済み
スレッド・セーフ
はい
説明
_C_Quickpool_Debug() 関数は、高速プール・メモリー・マネージャー特性を変更します。 環境変数を使用して、このサポートを構成することもできます (参照セクション「 環境変数」を参照してください)。
_C_Quickpool_Debug() のパラメーターは以下のとおりです。
- newval
_C_Quickpool_Debug_T構造体を指すポインター。 この構造体には以下のフィールドがあります。- フラグ
- 変更される特性を指す符号なし整数値。 フラグ・フィールドは次の値を含むことができます (任意の組み合わせで使用できます)。
_C_INIT_MALLOC- 割り振られたすべてのストレージを指定した値に初期設定します。
_C_INIT_FREE- 解放されたすべてのストレージを指定した値に初期設定します。
_C_COLLECT_STATS_C_Quickpool_Report()関数で使用するために、高速プール・メモリー・マネージャーに関する統計を収集します。
- malloc_val
- 割り振り済みメモリーの各バイトの初期設定に使用される、1 バイトの符号なし文字の値。 このフィールドは、
_C_INIT_MALLOCフラグが指定されている場合にのみ、使用されます。 - free_val
- 解放済みメモリーの各バイトの初期設定に使用される、1 バイトの符号なし文字の値。 このフィールドは、
_C_INIT_FREEフラグが指定されている場合にのみ、使用されます。
newval の値が NULL である場合、現行の高速プール・メモリー・マネージャー特性を含む構造体が戻され、高速プール・メモリー・マネージャー特性は何も変更されません。
戻り値
戻り値は、現行の関数呼び出しで要求された変更が行われる前に _C_Quickpool_Debug() 値を含む構造体です。 この値を後続の呼び出しで使用することにより、_C_Quickpool_Debug() 値を前の状態に復元することができます。
例
次の例では
_C_Quickpool_Debug() を _C_INIT_MALLOC フラグおよび _C_INIT_FREE フラグと共に使用して、malloc 関数および free 関数のメモリーを初期化します。#include <stdlib.h>
#include <stdio.h>
int main(void) {
char *p;
char *mtest = "AAAAAAAAAA";
char *ftest = "BBBBBBBBBB";
unsigned int cell_sizes[2] = { 16, 64 };
unsigned int cells_per_extent[2] = { 16, 16 };
_C_Quickpool_Debug_T dbgVals = { _C_INIT_MALLOC | _C_INIT_FREE, 'A', 'B' };
if (_C_Quickpool_Init(2, cell_sizes, cells_per_extent)) {
printf("Error initializing Quick Pool memory manager.\n");
return -1;
}
_C_Quickpool_Debug(&dbgVals);
if ((p = malloc(10)) == NULL) {
printf("Error during malloc.\n");
return -2;
}
if (memcmp(p, mtest, 10)) {
printf("malloc test failed\n");
}
free(p);
if (memcmp(p, ftest, 10)) {
printf("free test failed\n");
}
printf("Test successful!\n");
return 0;
}
/*****************Output should be similar to:*****************
Test successful!
*******************************************************************/