函数返回3维数组的指针,该如何解决

函数返回3维数组的指针

int* func()
{
    int iArr[3][3][3] = {1,2,3,4,5,6,7,8,9};
    return (int*)iArr;
}

然后在主函数中

int *p = func();
cout<<*(p + 6)<<endl;

输出:7
如果在主函数中用:

int *p = func();
for(int i = 0;i < 9;i++)
        cout<<*(p + i)<<endl;

则输出是函数返回3维数组的指针,该如何解决
不明白是什么原因,求大家解答!
------解决思路----------------------
 int iArr[3][3][3] = {1,2,3,4,5,6,7,8,9};
    return (int*)iArr;


返回临时变量是错误的。
------解决思路----------------------
如1楼所说,func()函数执行结束后,iArr的空间就释放掉了
------解决思路----------------------
static int iArr[3][3][3] = {1,2,3,4,5,6,7,8,9};