我正在尝试创建一个动态数组,在第三次尝试时重新分配失败。 您可以在下面看到它的代码和输出。如图所示,第三次尝试将奇怪的整数放入数组中,然后重新分配失败。我哪里错了?
#include <stdio.h>
#include <stdlib.h>
int addNumberInput(int *array, int counter){
printf("Counter: %d\n", counter);
int tempInput, *tempArray, i = 0;
printf("Input a number: ");
scanf("%d", &tempInput);
if(tempInput == -1) return tempInput;
array[ counter ] = tempInput;
printf("Array till now:\n");
for( i ; i <= counter ; i++ ){
printf("%d, " , array[ i ] );
}
printf("\n");
tempArray = realloc(array, (counter + 2) * sizeof(int));
if(tempArray != NULL){
array = tempArray;
}
else{
printf("Error allocating memory!\n");
free(array);
return -1;
}
return tempInput;
};
int main(){
// Allocating one int sized array
int *array = malloc(sizeof(int));
int i = 0;
while(addNumberInput(array, i) != -1){
i++;
}
printf("Counter after: %d\n", i);
return 0;
}
这给出了下一个输出:
Counter: 0
Input a number: 1
Array till now:
1,
Counter: 1
Input a number: 2
Array till now:
1, 2,
Counter: 2
Input a number: 3
Array till now:
6755912, 6750400, 3,
Error allocating memory!
Counter after: 2