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