Por que meu programa não entra em loop infinito quando a matriz fora dos limites ocorre em C

int main(){
   int i;
   int arr[4];
   for(int i=0; i<=4; i++){
      arr[i] = 0;
   }
   return 0;
}
Eu assisti a um vídeo no youtube do CS107 (aula 13), no qual este exemplo é mostrado e contei por que o programa acima levará a um loop infinito, mostrando diagramas de memória. arr [4] sai dos limites e deve levar a um endereço em que i é armazenado e alterando o valor de i de volta para 0, levando a um loop infinito. Mas quando tentei executar isso no meu mac usando o compilador gcc, para executar o loop (verificado inserindo printf) 5 vezes. isto é, para o valor de i = 0,1,2,3,4.

questionAnswers(2)

yourAnswerToTheQuestion