【发布时间】:2016-10-29 10:18:05
【问题描述】:
我正在尝试制作一个随输入增加的数组的简单示例。输入是一系列数字,这个系列的结尾是零。我的想法是每次读取一个新数字时增加我的数组,但由于某种原因,这似乎不起作用,因为我收到错误:
Realloc(): invalid pointer
这是我当前的代码:
#include <stdio.h>
#include <stdlib.h>
int *resizeIntArray(int *series, int newSize) {
int *newSeries = realloc(series, newSize * sizeof(int));
if (newSeries == NULL) {
printf("Error: Memory allocation failed");
exit(-1);
}
return newSeries;
}
int main(int argc, char *argv[]) {
int number;
scanf("%d", &number);
int *numbers;
int size = 0;
while (number != 0) {
numbers = resizeIntArray(numbers, size + 1);
printf("%d ", number);
scanf("%d", &number);
size++;
}
}
【问题讨论】:
-
你的编译器应该已经警告过这一点。您使用的是哪个编译器,您是否确保设置了合理的选项?
-
如果文件不包含
0值,您应该测试scanf()的返回值以避免文件末尾的无限循环。