使用 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 文件中收集统计信息)。
我已更改 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 文件中收集统计信息)。