that's my first question. Sorry if I do something wrong. Thanks for your understanding.
I have a dynamically allocated array,
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 tried to print what is at (i+10)th index of my array. It prints "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". 
Why arr[i+10] is not giving seg fault ?
Thank you for your time.
 
    