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