Выделение памяти игнорирует гибкий элемент массива
Этот дефект возникает в следующих случаях:
Объект с гибким элементом массива неизвестного размера определяется во время компиляции.
Назначение между структурами с гибким элементом массива выполняется без использования memcpy() или аналогичную функцию.
Структура с гибким элементом массива используется в качестве аргумента функции и передается аргументу по значению.
Функция возвращает структуру с гибким элементом массива.
Гибкий элемент массива не имеет указанного размера массива и является последним элементом структуры с по крайней мере двумя именованными элементами.
Если размер гибкого элемента массива не определен, он игнорируется при выделении памяти для содержащей структуры. Доступ к такой структуре имеет неопределенное поведение.
Использовать malloc() или подобную функцию для выделения памяти для структуры с гибким элементом массива.
Использовать memcpy() или подобную функцию для копирования структуры с гибким элементом массива.
Передача структуры с гибким элементом массива в качестве аргумента функции указателем.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки:
FLEXIBLE_ARRAY_MEMBER_STRUCT_MISUSE
|
| Воздействие: Низкий |