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

Анализатор обнаружил потенциально возможную ошибку, связанную с хранением указателя на локальную переменную. Предупреждение выдается в том случае, если время жизни объекта меньше, чем время жизни указателя на него.

Первый пример:

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

В данном случае адрес локальной переменной сохраняется внутри класса в переменную m_p и может затем быть по ошибке использован в другой функции, когда переменная localVar будет уже уничтожена.

Второй пример:

    void Get(float **x)
    {
      float f;
      ...
      *x = &f;
    }

Функция Get() вернет указатель на локальную переменную, которая уже в этот момент не будет существовать.

Это сообщение подобно сообщению V507.

Данная диагностика классифицируется как:

CWE-562 CERT-DCL30-C

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V506.