Неформальный термин динамическое распределение почти наверняка относится к формальному термину выделенное хранилище , что означает, что память кучи возвращается из malloc
/ calloc
/ realloc
.
Конечно, естьдругие «динамические вещи», такие как стек, который динамически растет и опускается, но мы не называем динамическое выделение стека.
Поэтому динамическое выделение невозможно без malloc
/ calloc
/realloc
.
В вашем примере имеется массив переменной длины (VLA).Они распределяются во время выполнения, как правило, в стеке.Вы используете это неправильно.
- Перед созданием массива убедитесь, что
n
является допустимым значением в определенном диапазоне от 1 до макс. - Назначьте VLA с помощью
int num[n];
.