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:
|