Índice de matriz fuera de límite en C
Por queC
se diferencia en caso de que el índice de matriz quede fuera del límite
#include <stdio.h>
int main()
{
int a[10];
a[3]=4;
a[11]=3;//does not give segmentation fault
a[25]=4;//does not give segmentation fault
a[20000]=3; //gives segmentation fault
return 0;
}
Entiendo que está intentando acceder a la memoria asignada al proceso o subproceso en caso dea[11]
oa[25]
y se está saliendo de los límites de la pila en caso dea[20000]
.
¿Por qué el compilador o el enlazador no dan un error? ¿No son conscientes del tamaño de la matriz? Si no, ¿cómo funcionasizeof(a)
¿funciona correctamente?