Данное диагностическое правило основано на руководстве AUTOSAR (AUTomotive Open System ARchitecture) по разработке программного обеспечения.
Копирование адреса объекта в указатель/ссылку с большим временем жизни может привести к возникновению "висячего" указателя/ссылки после того, как исходный объект перестанет существовать. Это является нарушением безопасности памяти. Использование данных, на которые указывает "висячий" указатель/ссылка, приводит к неопределенному поведению.
Первый пример кода, на который анализатор выдаст предупреждение:
int& Foo( void ) { int some_variable; .... return some_variable; }
Второй пример кода, на который анализатор выдаст предупреждение:
#include <stddef.h> void Bar( int **ptr ) { int some_variable; .... if (ptr != NULL) *ptr = &some_variable; }
Данная диагностика классифицируется как:
|