动态分配数组的末尾

这是我的第一个问题。对不起,如果我做错了。感谢您的理解。

我有一个动态分配的数组,

int *read_array(char *file_path , int *arr){

    int max = 0 ,min = 0, i = 0;
    FILE *fp = fopen(file_path,"r");

    arr= malloc(1 * sizeof(int));

    fscanf(fp, "%d,", &arr[i] );
    max = arr[i];
    min = arr[i];
    i++;
    arr = realloc(arr , i * sizeof(int));

    while(fscanf(fp, "%d,", &arr[i] ) != EOF){

        if(max < arr[i]){
            max = arr[i];
        }
        else if(min > arr[i] ){
            min = arr[i];
        }

        i++;
        arr = realloc(arr , (i +1) * sizeof(int));

    }
    printf("%d\n",arr[i + 10]);
    free(arr);
}

我试图打印数组第(i + 10)个索引处的内容。打印“ 0”。

But when I made that printf like printf("%d\n",arr[i + 100000]); I got a seg fault as I expected. But I think I allocated as much memory as "i".

为什么[i + 10]没有给出段错误?

感谢您的时间。