【问题标题】:Testing slob.c using malloc()使用 malloc() 测试 slob.c
【发布时间】:2015-04-01 14:12:15
【问题描述】:

我已经更改了 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

【问题讨论】:

  • 这是内核代码还是用户代码?如果是用户代码,你用什么调用来指定内存分配策略?

标签: unix memory-management operating-system malloc heap-memory


【解决方案1】:

我原来的答案其实是正确的:

char * a ;
int i ;

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

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

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 2021-09-22
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2021-02-20
    • 2021-11-05
    相关资源
    最近更新 更多