This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).
Copying an object's address to a pointer/reference with a long lifetime may cause that pointer/reference to become "dangling" after the original object has ceased to exist. This is a case of memory safety violation. Using data referenced by a "dangling" pointer/reference leads to undefined behavior.
First example of non-compliable code:
int& Foo( void ) { int some_variable; .... return some_variable; }
Second example of non-compliable code:
#include <stddef.h> void Bar( int **ptr ) { int some_variable; .... if (ptr != NULL) *ptr = &some_variable; }
This diagnostic is classified as:
|