¿Por qué mi programa no entra en un bucle infinito cuando ocurre una matriz fuera de los límites en C

int main(){
   int i;
   int arr[4];
   for(int i=0; i<=4; i++){
      arr[i] = 0;
   }
   return 0;
}
Vi un video en youtube de CS107 (lección 13) en el que se muestra este ejemplo y me dijo por qué el programa anterior conducirá a un bucle infinito al mostrar diagramas de memoria. arr [4] se sale de los límites y debería conducir a una dirección donde se almacena i y cambiar el valor de i de nuevo a 0, lo que lleva al bucle infinito. Pero cuando intenté ejecutar esto en mi mac usando el compilador gcc, para el bucle ejecutado (verificado al insertar printf) 5 veces. es decir, para el valor de i = 0,1,2,3,4.

Respuestas a la pregunta(2)

Su respuesta a la pregunta