Função retornando array mas principal mostrando lixo [duplicado]

O código a seguir está imprimindo valores de lixo. Eu estou passando uma matriz para uma função que adiciona 5 a cada elemento, mas quando ele retorna o ponteiro da matriz, o principal está mostrando lixo.

Eu tentei indexação e ponteiros lá no principal, mas ainda os mesmos resultados. Como posso consertar isso?

# include <conio.h>
# include <iostream>
using namespace std;

int * add5ToEveryElement(int arr[], int size)
{
    int theArray[5];
    for(int i=0; i<size; i++)
    {
        theArray[i] = arr[i] + 5;
        cout<<theArray[i]<<endl;
    }
    return theArray;
}

void main()
{
    const int size = 5;
    int noArr[size];
    for(int i=0; i<size; i++)
    {
        noArr[i] = i;
    }
    int *arr = add5ToEveryElement(noArr, size);
    cout<<endl;cout<<endl;
    for(int i=0; i<size; i++)
    {
        cout<<arr[i]<<endl;
    }
    cout<<endl;cout<<endl;cout<<endl;cout<<endl;
    for(int i=0; i<size; i++)
    {
        cout<<*arr<<endl;
        *arr++;
    }
    getch();
}

questionAnswers(3)

yourAnswerToTheQuestion