Накладные расходы на массив переменной длины в C ++?

Глядя на этот вопрос: Почему компилятору C / C ++ нужно знать размер массива при компиляции время? мне пришло в голову, что разработчикам компиляторов нужно было немного поработать сейчас (это часть стандарта C99, это было 10 лет назад) и обеспечить эффективные реализации.

Однако это все еще кажется (из ответов) считается дорогостоящим.

Это меня как-то удивляет.

Конечно, я понимаю, что статическое смещение намного лучше динамического с точки зрения производительности,

[перефразируя]

Как VLA реализованы в gcc / VC ++?

Неужели цена так впечатляет?

[конец перефразирования]

Мне кажется, что это может быть лучше, чем использование, скажем, вектора , даже с существующими реализациями, поскольку вы не несете затрат на динамическое размещение ( ценой невозможности изменить размер).

РЕДАКТИРОВАТЬ:

Здесь есть частичный ответ , однако сравнение VLA с традиционными массивами кажется несправедливым. Если бы мы знали размер заранее, нам бы не понадобился VLA. В том же вопросе AndreyT дал несколько указаний по поводу реализации, но не так точно, как хотелось бы.

13
задан Community 23 May 2017 в 10:10
поделиться