专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VC

函数堆栈释放困惑解决方法

发布时间:2011-06-23 14:24:08 文章来源:www.iduyao.cn 采编人员:星星草
函数堆栈释放困惑
C/C++ code

int * f(void)
{
    int i = 10;
    return &i;
}


int _tmain(int argc, _TCHAR* argv[])
{
    cout<<*f()<<endl;
    char end;
    cout<<"Press ENTER to exit"<<endl;
    cin>>end;
    return 0;
}


测试环境是VS2005,看书上说局部变量在退出其所在程序块的地方销毁,对战在函数退出的时候清退。
那么上面的函数f()在调用完后局部变量i应该是被销毁了吧,为什么还能输出10呢?

------解决方案--------------------
调用完毕,堆栈指针往下移动,上面的数据还在,但是再次调用别的函数,堆栈往上扩张,数据就被破坏了。所以这么做是不可靠的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: