Глядя на этот вопрос: Почему компилятору C / C ++ нужно знать размер массива при компиляции время? мне пришло в голову, что разработчикам компиляторов нужно было немного поработать сейчас (это часть стандарта C99, это было 10 лет назад) и обеспечить эффективные реализации.
Однако это все еще кажется (из ответов) считается дорогостоящим.
Это меня как-то удивляет.
Конечно, я понимаю, что статическое смещение намного лучше динамического с точки зрения производительности,
[перефразируя]
Как VLA реализованы в gcc / VC ++?
Неужели цена так впечатляет?
[конец перефразирования]
Мне кажется, что это может быть лучше, чем использование, скажем, вектора
, даже с существующими реализациями, поскольку вы не несете затрат на динамическое размещение ( ценой невозможности изменить размер).
РЕДАКТИРОВАТЬ:
Здесь есть частичный ответ , однако сравнение VLA с традиционными массивами кажется несправедливым. Если бы мы знали размер заранее, нам бы не понадобился VLA. В том же вопросе AndreyT дал несколько указаний по поводу реализации, но не так точно, как хотелось бы.