C ++ В чем разница между статическим и динамическим размещением этого массива? [Дубликат]

На этот вопрос уже есть ответ:

Разница между типом массива и массивом, выделенным с помощью malloc 9 ответов
int length = 5;
int hi[length];

Против

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

Меня учили, что компиляторы жалуются на C всякий раз, когда вы пытаетесь статически распределить массивы с размером, который не является постоянным. Поэтому, если вам когда-либо понадобился массив неизвестного размера, вам нужно было динамически распределять память. Однако теперь, когда есть компиляторы, которые позволяют первый пример, что именно они делают? Они все еще идут в сегмент данных или не идут в кучу? Если они идут в кучу, то в чем разница между примерами и почему мне все равно придется вызывать delete [] во 2-м примере, а не в 1-м примере?

Ответы на вопрос(2)

Ваш ответ на вопрос