Unix 使用malloc()测试slob.c
我修改了slob.c,这样它就可以收集最近100次小列表分配的统计数据。我做了必要的编辑以确保SLOB被使用 我正在运行一个测试程序,在20字节的大小上调用malloc()大约10000或100000次 但我在测试程序运行后立即进行的SLOB测试结果表明,平均声明大小为140字节(当时我预计它至少会接近20字节) 我做错了什么,有没有办法准确地测试SLOB 我很确定我收集的数据是准确的,因为我已经有几位教授帮我检查过了。这是我目前的测试计划:Unix 使用malloc()测试slob.c,unix,memory-management,operating-system,malloc,heap-memory,Unix,Memory Management,Operating System,Malloc,Heap Memory,我修改了slob.c,这样它就可以收集最近100次小列表分配的统计数据。我做了必要的编辑以确保SLOB被使用 我正在运行一个测试程序,在20字节的大小上调用malloc()大约10000或100000次 但我在测试程序运行后立即进行的SLOB测试结果表明,平均声明大小为140字节(当时我预计它至少会接近20字节) 我做错了什么,有没有办法准确地测试SLOB 我很确定我收集的数据是准确的,因为我已经有几位教授帮我检查过了。这是我目前的测试计划: int main() { char * a
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
intmain()
{
char*a;
int i;
对于(i=0;i<1000000;i++)
{
a=(char*)malloc(20*sizeof(char));
如果(a==NULL)printf(“NULL\n”);
}
//这里,我打印系统调用产生的内存占用和空闲内存的统计数据
我最初的答案实际上是正确的:
char * a ;
int i ;
for( i = 0; i < 10000; i++)
{
a = (char*) malloc(20*sizeof(char)) ;
if(a == NULL) printf("NULL\n") ;
}
char*a;
int i;
对于(i=0;i<10000;i++)
{
a=(char*)malloc(20*sizeof(char));
如果(a==NULL)printf(“NULL\n”);
}
此简单代码可用于测试修改后的slob文件如何分配内存(考虑到您正在slob文件中收集统计数据)。这是内核代码还是用户代码?如果是用户代码,您使用什么调用来指示内存分配策略?