使用 malloc() 测试 slob.c

Testing slob.c using malloc()

我已更改 slob.c 以便它收集最近 100 个小列表分配的统计信息。我进行了必要的编辑以确保使用了 SLOB。

我是 运行 一个测试程序,它在 20 字节的大小上调用 malloc() 大约 10,000 或 100,000 次。

但是在测试程序运行后我的 SLOB 测试结果立即表明平均要求的大小为 140 字节(当我期望它至少接近 20 字节时)。

我做错了什么,有没有办法准确测试SLOB?

我很确定我的统计数据收集是准确的,因为我已经让几位教授为我检查过了。这是我当前的测试程序:

int main()
{
    char * a ;
    int i ;

    for( i = 0; i < 1000000; i++)
    {
        a = (char*) malloc(20*sizeof(char)) ;
        if(a == NULL) printf("NULL\n") ;
    }
    //Here I print the system call resulting stats for memory claimed and free memory

原来我的回答是正确的:

char * a ;
int i ;

for( i = 0; i < 10000; i++)
{
    a = (char*) malloc(20*sizeof(char)) ;
    if(a == NULL) printf("NULL\n") ;
}

这个简单的代码可用于测试更改后的 slob 文件如何分配内存(考虑到您正在 slob 文件中收集统计信息)。