В C89 длина массива известна во время компиляции. Но в C99 с массивами переменной длины длина массива может быть неизвестна до выполнения.
Итак, как он вычисляется?
И почему бы не вычислить длину динамически распределенного массива таким же образом?