V506. Pointer to local variable 'X' is stored outside the scope of this variable. Such a pointer will become invalid


The analyzer found a potential error related to storing a pointer of a local variable. The warning is generated if the lifetime of an object is less than that of the pointer referring to it.

The first example:

class MyClass
  size_t *m_p;
  void Foo() {
    size_t localVar;
    m_p = &localVar;

In this case, the address of the local variable is saved inside the class into the m_p variable and can be then used by mistake in a different function when the localVar variable is destructed.

The second example:

void Get(float **x)
  float f;
  *x = &f;

The Get() function will return the pointer to the local variable that will not exist by the moment.

This message is similar to V507 message.