如果在关闭fun()之后所有内存都被释放,那么如何打印输出

时间:2019-06-25 12:55:31

标签: c++ c pointers memory

以下C程序的输出是什么?当关闭后fun()的所有变量都取消分配其内存时,如何打印输出?

#include<stdio.h>
int * fun()
{
    int q = 10;
    int *p;
    p = &q;
    return p;
}    
int main()
{
    int *res;
    res= fun();
    printf("%d", *res);
    return 0;
}

我希望指针res指向空

1 个答案:

答案 0 :(得分:0)

您正在返回一个指向堆栈上地址的指针。合理的编译器会给您这样的警告:

  

“警告C4172:局部变量或临时变量的返回地址:q”

但是基本上,行为是不确定的,并且还取决于您的优化级别。

相关问题