C

时间:2016-11-03 00:43:03

标签: c linux segmentation-fault calloc

我正在制作一个C程序,它接受calloc,malloc和alloca进程的平均时间。我有一切都要编译,但是当我运行它时,我得到一个分段错误。它运行的第一件事是calloc,所以我将假设问题从那里开始。

这是我的calloc函数,malloc和alloca基本相同,所以我认为没有理由发布它们。

double calloctest(int objectsize, int numberobjects, int numberoftests)
{
    double average = 0;
    for (int i = 0; i < numberoftests; i++)
    {
            clock_t begin = clock();
            int *objectsize = calloc(numberobjects, sizeof(char) * *objectsize);
            clock_t end = clock();
            double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
            average = average + time_spent;
            printf("%f", time_spent);
            free(objectsize);
    }
    double totalAverage;
    totalAverage = average / numberoftests;
    return totalAverage;
}

1 个答案:

答案 0 :(得分:0)

您有一个局部变量objectsize,它使用相同的名称隐藏函数参数,并在存储calloc()的返回值之前取消引用它:

int *objectsize = calloc(numberobjects, sizeof(char) * *objectsize);

你可能想写:

int *object = calloc(numberobjects, objectsize);
...
free(object);