MISRA C:2012 Rule 18.8

Типы массивов переменной длины не должны использоваться

Описание

Определение правила

Типы массивов переменной длины не должны использоваться.

Объяснение

Когда размер массива, объявленного в прототипе блока или функции, не является целочисленным постоянным выражением, вы задаете типы переменных массивов. Типы переменных массивов обычно реализуются как объект переменного размера, сохраненный в стеке. Использование массивов переменных типов может сделать невозможным статистическое определение объема памяти для стека.

Если размер массива переменной длины отрицательный или нулевой, поведение не определено.

Если массив переменной длины должен быть совместим с другим типом массива, то размер типов массива должен быть одинаковыми и положительными целыми числами. Если массив не соответствует этим требованиям, поведение не определено.

Если вы используете тип массива переменной длины в sizeof, неясно, рассчитан ли размер массива или нет.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Проверяйте информацию

Группа: указатели и массивы
Категория: Требуемая
Категория AGC: Требуется