_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!
*******************************************************************/

関連情報