malloc 和 realloc 数组给出意外输出

malloc and realloc array giving unexpected output

当输入为“1 2 3 4 5 6 7 8 9 10 11”时,预期输出应与输入相同。然而输出是 '1 2 3 4 5 6 7 8 9 10 -1850774484' 。仅当输入的整数超过 10 个时才会发生。我的 realloc 行哪里出错了

#include <stdio.h>
#include <stdlib.h>

#define INITIAL_SIZE 10

int
main(int argc, char **argv){
    int i = 0, num, size = 0, n = INITIAL_SIZE;
    int *A;

    A = malloc(n * sizeof(int));

    if(A == NULL){
        printf("OUT OF MEMORY\n");
        exit(EXIT_FAILURE);
    }

    while(scanf("%d",&num) == 1 && getchar()!='\n'){
        A[i] = num;
        i++;
        size++;
        if (size >= n){
            n = n * 2;
            A = realloc(A,n * sizeof(int));
        }
    }

    printf("Int Array: ");
    for (i = 0; i <= size; i++){
        printf("%d ", A[i]);
    }
    printf("\n");

    return 0;
}

realloc没有问题。您在最后一个循环中打印了一个额外的未初始化索引。通过更改

来修复它
for (i = 0; i <= size; i++)

for (i = 0; i < size; i++)

realloc 的唯一问题是您没有像 malloc 那样检查它是否成功。另一个问题是你没有释放分配的内存。