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