C ++ ¿cuál es la diferencia entre la asignación estática y dinámica de esta matriz? [duplicar

Esta pregunta ya tiene una respuesta aquí:

Diferencia entre el tipo de matriz y la matriz asignada con malloc 9 respuestas
int length = 5;
int hi[length];

vs

int length = 5;
int *hi = new int[length];

Me enseñaron que los compiladores se quejan en C cada vez que intentas asignar estáticamente matrices con un tamaño que no es constante. Entonces, si alguna vez necesitó una matriz de tamaño desconocido, debía asignar memoria de forma dinámica. Sin embargo, ahora que hay compiladores que permiten el primer ejemplo, ¿qué están haciendo exactamente? ¿Siguen en el segmento de datos o no van en el montón? Si van al montón, ¿cuál es la diferencia entre los ejemplos y por qué todavía tendría que llamar a delete [] en el segundo ejemplo, pero no en el primer ejemplo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta