【发布时间】:2021-06-10 20:36:50
【问题描述】:
下面的代码给了我一个terminated by signal SIGSEGV (Address boundary error):
void rec(int x, int *arr, int *size) {
if (x < 0) {
rec(-x, arr, size);
return;
}
arr = realloc(arr, sizeof(int) * ++(*size));
*(arr + (*size) - 1) = x % 10;
if (x % 10 != x)
rec(x / 10, arr, size);
}
int main() {
int *arr = malloc(sizeof(int));
int *size = malloc(sizeof(int));
*size = 0;
rec(20, arr, 0);
}
我已经发现 main 方法中的 arr 计数器无法保持所需的结果,但我仍然不明白为什么会出现错误。
【问题讨论】:
-
你知道Hilberto1吗?此代码与stackoverflow.com/questions/66603006/… 非常相似
-
我认为这是重新发布一个封闭的问题
-
@Barmar 你的回答很遗憾没有解决我的问题
-
因为你有多个错误,而我没有注意到第二个。
-
你是同一张海报吗?如果副本没有解决问题,您应该要求重新打开它。
标签: c dynamic-memory-allocation realloc function-definition null-pointer