当前位置:  技术问答>linux和unix

堆栈回收问题

    来源: 互联网  发布时间:2016-12-03

    本文导语:  i n t  f1(int val) { int *ptr; if (val == 0) { int val; val = 5; ptr = &val; } return (*ptr + 1); } 1 4 0 U N I X环境高级编程 大家分析下这个题目 输出 6 是否说明栈空间在方法结束后才回收 在括号外只是访问权限 消失...

i n t  f1(int val)
{
int *ptr;
if (val == 0) {
int val;
val = 5;
ptr = &val;
}
return (*ptr + 1);
}
1 4 0 U N I X环境高级编程

大家分析下这个题目
输出 6 是否说明栈空间在方法结束后才回收 在括号外只是访问权限 消失 使用指针还是能访问到的

|
哦,看错了,你的val是在花括号里面定义的

这样是有隐患的,虽然结果可能是正确的

|
空间虽然回收了,但该内存对应的数值在没有被覆盖前还是5,所以可以取到,但不代表这样做稳妥

|
输出 6 是否说明栈空间在方法结束后才回收 在括号外只是访问权限 消失 使用指针还是能访问到的


这个不能说明吧。
这个只能说明刚才的那个地址的数据没有改变。

|

不会清理,内存的值还是保留之前的值,所以还是5

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 每个线程有自己私有的堆栈,其实这些堆栈的资源是操作系统分配给进程的,这种说法对吗?
  • C++ Stacks(堆栈) 成员 empty():堆栈为空则返回真
  • 堆和堆栈有什么不同?
  • C++ Stacks(堆栈) 成员 pop():移除栈顶元素
  • cpu是怎么找到中断程序的堆栈的?
  • C++ Stacks(堆栈) 成员 top():返回栈顶元素
  • redhat下改变某个进程中使用的堆栈大小
  • C++ Stacks(堆栈) 成员 size():返回栈中元素数目
  • 请高手给讲解一下堆栈、堆、静态存储等概念
  • C++ Stacks(堆栈) 成员 push():在栈顶增加元素
  • modprobes可不可以打出堆栈信息?
  • python异常信息堆栈输出到日志文件
  • linux下,进程的堆栈大小到底是OS决定的还是编译器决定的?
  • C++程序的内存不同的数据段及堆栈布局
  • 到底什么是堆栈?
  • windows堆栈溢出利用的七种方式
  • 什么是堆栈?
  • 512字节的数组,是放在堆栈上好还是放在堆上好??
  • 堆栈段仅仅是指的栈?和堆有关系么?
  • linux 0.11是如何使用堆栈的?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3