Динамически размещать массив без malloc и calloc - PullRequest
0 голосов
/ 07 марта 2019
printf("Enter number of elements\n");
scanf("%d",&n);
int num[sizeof(int)*n];

Это правильный способ динамически распределять размер массива?

1 Ответ

3 голосов
/ 07 марта 2019

Неформальный термин динамическое распределение почти наверняка относится к формальному термину выделенное хранилище , что означает, что память кучи возвращается из malloc / calloc / realloc.

Конечно, естьдругие «динамические вещи», такие как стек, который динамически растет и опускается, но мы не называем динамическое выделение стека.

Поэтому динамическое выделение невозможно без malloc / calloc /realloc.


В вашем примере имеется массив переменной длины (VLA).Они распределяются во время выполнения, как правило, в стеке.Вы используете это неправильно.

  1. Перед созданием массива убедитесь, что n является допустимым значением в определенном диапазоне от 1 до макс.
  2. Назначьте VLA с помощью int num[n];.
...