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 respostasint 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?