_C_Quickpool_Debug ()- 修改快速儲存區記憶體管理程式性質

格式

#include <stdlib.h>
_C_Quickpool_Debug_T _C_Quickpool_Debug(_C_Quickpool_Debug_T *newval);

語言層次

擴充

安全執行緒

說明

_C_Quickpool_Debug() 功能會修改「快速儲存區」記憶體管理程式性質。 環境變數也可以用來配置這項支援 (參照 環境變數小節)。

_C_Quickpool_Debug() 的參數如下:

紐瓦爾
指向 _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 旗標,以在 mallocfree 函數上起始設定記憶體。
#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!
*******************************************************************/

相關資訊