Массив переменной длины - PullRequest
8 голосов
/ 03 мая 2010

Я хотел бы знать, как управляется массив переменной длины (какие дополнительные переменные или структуры данных хранятся в стеке, чтобы иметь массивы переменной длины).

Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 03 мая 2010

Это просто массив динамического размера (зависит от реализации, но чаще всего в стеке). Это очень похоже на alloca в старые времена, за исключением того, что sizeof будет возвращать фактический размер массива, что означает, что размер массива также должен храниться где-то (зависит от реализации, но, вероятно, в стеке тоже).

1 голос
/ 03 мая 2010

Размер массивов переменной длины определяется во время выполнения, а не во время компиляции.
Способ управления им зависит от компилятора.
GCC, например, выделяет память в стеке.
Но специальной структуры нет. Это просто обычный массив, размер которого известен во время выполнения.

0 голосов
/ 04 мая 2010

в качестве альтернативы вы можете использовать некоторые контейнеры, например, ArrayList в Java или вектор в C / C ++

...