【发布时间】:2016-11-03 00:43:02
【问题描述】:
我正在制作一个 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;
}
【问题讨论】:
-
因为你有
sizeof(char) * *objectsize -
A)
objectsize不是指针。 B)sizeof(char)是1。你可以有calloc(numberobjects, objectsize) -
非常感谢,malloc和alloca做事速度一样吗?我还打印出我的速度,malloc 和 alloca 都得到相同的速度。
标签: c linux segmentation-fault calloc