_C_Quickpool_Report() — 高速プール・メモリー・マネージャー・レポートの生成

形式

#include <stdlib.h>
void _C_Quickpool_Report(void);

言語レベル

拡張済み

スレッド・セーフ

はい

説明

_C_Quickpool_Report() 関数は、現行の活動化グループ内で高速プール・メモリー・マネージャーにより使用されるメモリーのスナップショットを含む、スプール・ファイルを生成します。 高速プール・メモリー・マネージャーが現行の活動化グループで使用可能にされていない場合、または統計収集が使用可能にされていない場合、レポートは、収集されるデータは何もないことを示すメッセージになります。

高速プール・メモリー・マネージャーが使用可能にされており、さらに統計収集が使用可能にされている場合、生成されるレポートは、統計収集が使用可能にされている間の各 16 バイトのメモリーに対する割り振り試行の回数を示します。 また、レポートは各プールに達した残りの割り振りの最大数 (ピーク割り振り) を示します。 指定したメモリー範囲に対してストレージ要求がなされない場合、そのメモリー範囲はレポートに含まれません。 最大セル・サイズ (4096 バイト) よりも大きい割り振りは、出力されません。

戻り値

この関数に対する戻り値はありません。

次の例では _C_Quickpool_Init() を使用して、高速プール・メモリー・マネージャーを使用可能にします。 _C_COLLECT_STATS フラグを使用して情報を収集します。 収集された情報は、_C_Quickpool_Report() を使用して出力されます。
#include <stdlib.h>
#include <stdio.h>
int main(void) {
  char *p;
  int   i;
  unsigned int cell_sizes[2]       = { 16, 64 };
  unsigned int cells_per_extent[2] = { 16, 16 };
  _C_Quickpool_Debug_T  dbgVals = { _C_COLLECT_STATS, '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);

  for (i = 1; i <= 64; i++) {
    p = malloc(i);
    free(p);
  }
  p = malloc(128);
  free(p);
  _C_Quickpool_Report();
  return 0;
}
/*****************Spooled File Output should be similar to:**********
Pool 1 (16 bytes, 1 peak allocations):
1-16 bytes: 16 allocations
Pool 2 (64 bytes, 1 peak allocations):
17-32 bytes: 16 allocations
33-48 bytes: 16 allocations
49-64 bytes: 16 allocations
Remaining allocations smaller than the largest cell size (4096 bytes):
113-128 bytes: 1 allocations
*******************************************************************/

関連情報