Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用malloc()测试slob.c_Unix_Memory Management_Operating System_Malloc_Heap Memory - Fatal编程技术网

Unix 使用malloc()测试slob.c

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

我修改了slob.c,这样它就可以收集最近100次小列表分配的统计数据。我做了必要的编辑以确保SLOB被使用

我正在运行一个测试程序,在20字节的大小上调用malloc()大约10000或100000次

但我在测试程序运行后立即进行的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
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文件中收集统计数据)。

这是内核代码还是用户代码?如果是用户代码,您使用什么调用来指示内存分配策略?