我正在制作一个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;
}
答案 0 :(得分:0)
您有一个局部变量objectsize
,它使用相同的名称隐藏函数参数,并在存储calloc()
的返回值之前取消引用它:
int *objectsize = calloc(numberobjects, sizeof(char) * *objectsize);
你可能想写:
int *object = calloc(numberobjects, objectsize);
...
free(object);