Declara una matriz con una variable

Creo que el tamaño de la matriz debe ser una constante int cuando lo declara. Sin embargo, compilé el siguiente código y no obtuve ningún error. ¿Podría explicar acerca de esto?

#include  void function(int); int main(void){ int m = 0; scanf("%d", &m); function(m); return 0; } void function(int i){ int array[i]; } 

entrada: 5 salida: nada. pero no consiguió ningún error.

Agregado de C99, una matriz de longitud variable (o VLA) es una estructura de datos de matriz de duración de almacenamiento automático cuya longitud se determina en tiempo de ejecución (en lugar de en tiempo de comstackción).

VLA trabaja colocando la matriz en la stack. Esto hace que la asignación y el acceso sean extremadamente rápidos, pero la stack suele ser pequeña (de unos pocos KB), y cuando el VLA desborda la stack, es indistinguible de una recursión infinita.

¿Por qué debería el progtwig devolver un error? ¿Qué esperas? Revisa el VLA en C.

Referencia_a_VLA