C ++ qual é a diferença entre alocação estática e dinâmica dessa matriz? [duplicado

Esta pergunta já tem uma resposta aqui:

Diferença entre o tipo de matriz e a matriz alocada com malloc 9 respostas
int length = 5;
int hi[length];

vs

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

Foi ensinado que os compiladores reclamam em C sempre que você tenta alocar estaticamente matrizes com tamanho que não é constante. Portanto, se você precisar de uma matriz de tamanho desconhecido, precisará alocar memória dinamicamente. No entanto, agora que existem compiladores que permitem o primeiro exemplo, o que exatamente eles estão fazendo? Eles ainda estão no segmento de dados ou não estão no monte? Se eles estão indo para a pilha, qual é a diferença entre os exemplos e por que eu ainda teria que chamar delete [] no segundo exemplo, mas não no primeiro exemplo?

questionAnswers(2)

yourAnswerToTheQuestion