我为嵌入式系统编写了一段相当大的代码,其中一个函数用于在循环中计算和分配值给 calloc 结构。我在代码中遇到了一个错误,我花了一些时间来隔离和修复。如果需要,我想看看其他人是否可以在分享我的经验之前指出错误。
声明块:
int *arr;
int i, num;
printf("Enter number of elements: ");
scanf("%d", &num); //Assume num>=0
arr = calloc(num, sizeof(int));
if (arr == NULL)
return;
i = num;
以下哪个代码块/代码块将在调用 free() 时引发异常,为什么?
for (i; i > 0; i--) {
arr[num - i] = i;
}
free(arr);
或者
while (i--) {
arr[num - i] = i;
}
free(arr);