C99 также позволяет вам распределять массивы переменной длины (VLA) и другие переменные в любой точке внутри функции, а не только в начале, поэтому ваша точка зрения о возможности выделения памяти в другом месте не имеет значения.
Вы можете просто подключить:
int arr[somevar];
в любом месте функции и включите ее.
С VLA вам больше не нужно беспокоиться об использовании malloc/free
(или печально известной alloca
, доступной в некоторых реализациях, что было еще одним способом выполнения на основе стека, a
означает automatic
) для произвольно расположенных распределений переменного размера.
Если вам нужна возможность изменения размера, вам все равно придется использовать стандартные функции выделения памяти, такие как malloc
и realloc
. VLA не обеспечивают этот уровень функциональности (пока).