Я хотел бы знать, как массивом переменной длины управляют (какие дополнительные переменные или структуры данных сохранены на стеке, чтобы иметь массивы переменной длины).
Большое спасибо.
Это просто массив с динамическим размером (зависит от реализации, но чаще всего находится в стеке). Это очень похоже на alloca
в старые времена, за исключением того, что sizeof
вернет фактический размер массива, что означает, что размер массива также должен быть где-то сохранен ( тоже зависит от реализации, но, вероятно, тоже в стеке).
Размер массивов переменной длины определяется во время выполнения, а не во время компиляции.
Способ управления зависит от компилятора.
GCC, например, выделяет память в стеке.
Но особой структуры нет. Это просто обычный массив, размер которого известен во время выполнения.
в качестве альтернативы вы можете использовать несколько контейнеров, например ArrayList в java или вектор в c / c ++