Операции чтения или записи для объекта не определены
Этот дефект возникает при попытке чтения или записи в объект с временным временем жизни, возвращаемым вызовом функции. В структуре или объединении, возвращаемых функцией и содержащих массив, элементы массива являются временными объектами. Время жизни временных объектов заканчивается:
Когда полное выражение или полный декларатор, содержащий вызов, заканчивается, как определено в C11 Standard.
После следующей точки последовательности, как определено в стандартах C90 и C99. Точка последовательности - это точка в выполнении программы, в которой все предыдущие оценки завершены и последующая оценка еще не начата.
Для кода C++ при доступе к объекту с временным временем жизни возникает дефект только при записи в объект с временным временем жизни.
Если временный объект времени жизни возвращается по адресу, дефекты не возникают.
Изменение объектов с временным временем жизни является неопределенным поведением и может привести к ненормальному завершению программы и проблемам с переносимостью.
Присвойте объект, возвращенный вызовом функции, локальной переменной. Содержимое временного объекта жизненного цикла копируется в переменную. Теперь его можно изменить безопасно.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки:
TEMP_OBJECT_ACCESS |
| Воздействие: Низкий |
| CWE ID: 825 |
Find defects (-checkers) | Misuse of structure with flexible array member | Write without a further read