【发布时间】:2016-07-05 02:13:26
【问题描述】:
我正在尝试使用 mallinfo 结构打印通过 malloc 信息完成的堆使用情况..但我无法找到下面每个分配的完全匹配是我尝试的方式。
printMemoryInfo()
{
struct mallinfo mi;
memset(&mi,0,sizeof(struct mallinfo));
mi = mallinfo();
printf(" Heap Blocks = %d\n"mi.uordblks)
}
main()
{
printf("Initial \n");
printMemoryInfo();
char * data = malloc(2); /* 2 bytes*/
printf("After Malloc 1");
printMemoryInfo();
free(data );
data = malloc(3); /* 3 bytes*/
printf("After Malloc 2");
printMemoryInfo();
free(data );
data = malloc(6); /* 6 bytes*/
printf("After Malloc 3");
printMemoryInfo();
free(data );
data = malloc(10); /* 10 bytes*/
printf("After Malloc 4");
printMemoryInfo();
free(data );
}
Initial
Heap Blocks = 99128
After Malloc 1
Heap Blocks = 99144
After Malloc 2
Heap Blocks = 99144
After Malloc 3
Heap Blocks = 99160
After Malloc 4
Heap Blocks = 99160
从上面的打印日志中,我无法匹配分配了多少 第一次为 1 个字节,它增加 16 并且即使我分配 2 或 3 也会相同,如果我分配 6 个字节,它将增加 32 并且即使分配 10 个字节也会相同。
我需要帮助了解 mallinfo ,我正在研究 32 位嵌入式处理器。
【问题讨论】: