# 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.

This diagnostic is classified as:

CWE-562 CERT-DCL30-C

You can look at examples of errors detected by the V506 diagnostic.