Итак, у меня есть указатель, который должен увеличивать его «длину», пока пользователь не введет отрицательное число или «е».Он начинается с длины «1», через malloc()
, затем я использую в цикле do{...} while(...)
функцию realloc()
, чтобы увеличить его длину.Вот код:
int *array = malloc (sizeof(int) * 1);
bool exit = false;
int lastIndex = 0, value;
do {
printf ("Insert a positive number. Insert a negative number or \"e\" to exit: ");
int scanf_result = scanf("%i", &value);
if (scanf_result) {
if (value >= 0) {
array[lastIndex] = value;
lastIndex++;
array = (int*) realloc (array, lastIndex * sizeof(int));
} else {
exit = true;
}
} else {
exit = true;
}
} while (!exit);
Я не могу понять, почему после 7-го цикла он выходит с ошибкой realloc(): invalid next size
.
Есть идеи?Спасибо в совете за помощь.