_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()函数配合使用。
- 马洛卡瓦尔
- 用于初始化已分配内存的每个字节的 1 字节无符号字符值。 仅当指定了
_C_INIT_MALLOC标志时,才会使用此字段。 - 自由值
- 用于初始化已释放内存的每个字节的 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!
*******************************************************************/