重新分配内存 - 无法理解输出

时间:2014-11-15 17:33:34

标签: c realloc

我正在尝试创建一个动态数组,在第三次尝试时重新分配失败。 您可以在下面看到它的代码和输出。如图所示,第三次尝试将奇怪的整数放入数组中,然后重新分配失败。我哪里错了?

#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

0 个答案:

没有答案