_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
旗標,以在 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!
*******************************************************************/