﻿# V2548\. MISRA\. The address of an object with local scope should not be passed out of its scope\.

Диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

Копирование адреса объекта в указатель/ссылку с большим временем жизни может привести к возникновению "висячего" указателя/ссылки после того, как исходный объект перестанет существовать\. Это является нарушением безопасности памяти\. Использование данных, на которые указывает "висячий" указатель/ссылка, приводит к неопределенному поведению\.

Первый пример кода, на который анализатор выдаст предупреждение:

```cpp
int& Foo( void )
{
  int some_variable;
  ....
  return some_variable;
}
```

Второй пример кода, на который анализатор выдаст предупреждение:

```cpp
#include <stddef.h>
void Bar( int **ptr )
{
  int some_variable;
  ....
  if (ptr != NULL)
    *ptr = &some_variable;
}
```