﻿# V558\. Function returns pointer/reference to temporary local object\.

The analyzer detected an issue when a function returns a pointer to a local object\. This object will be destroyed when leaving the function, so you will not be able to use the pointer to it anymore\.

In a most common case, this diagnostic message is generated against the following code:

```cpp
float *F()
{
  float f = 1.0;
  return &f;
}
```

Of course, the error would hardly be present in such a form in real code\. Let's consider a more real example\. 

```cpp
int *Foo()
{
  int A[10];
  // ...
  if (err)
    return 0;
  
  int *B = new int[10];
  memcpy(B, A, sizeof(A));

  return A;
}
```

Here, we handled the temporary array A\. On some condition, we must return the pointer to the new array B\. But the misprint causes the A array to be returned, which will cause unexpected behavior of the program or crash\. This is the correct code:

```cpp
int *Foo()
{
  ...  
  int *B = new int[10];
  memcpy(B, A, sizeof(A));
  return B;
}
```