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