Путаница с malloc и индексом массива в C

Я пытался понять функцию malloc в C и написал следующий код:

int i;

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

if(arr==NULL){

  printf("Failed to allocate memory for arr...\n");
  exit(1);

}

Я думал, что это означает, что в массив можно добавить только 5 элементов. Чтобы проверить, так ли это, я добавил следующий код:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
arr[5] = 6;
arr[6] = 7;
arr[7] = 8;
arr[8] = 9;

for(i=0;i<9;i++){

    printf("%d\n",arr[i]);

}

Удивительно, но этот код скомпилировался и заработал идеально. Как это было возможно?

7
задан jww 13 September 2019 в 23:53
поделиться