打印

资源释放问题

[复制链接]
993|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-7-7 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如我们定义一个简单的程序
int main()
{
int a = 0;
int b = 1;
return 0;
}

那么在return 0时,编译器是先释放a的资源还是b的资源呢?
这与编译器的具体实现有关吗?
假如是:
int main()
{
int a= 0;
int* p=&a;
return 0;

}
呢?一般删除指针,指的是删除指针指向的对象。那么在return 0,时,删除这个具体指针与删除a二者谁在前,谁在后呢?

相关帖子

沙发
火箭球迷| | 2012-7-7 23:14 | 只看该作者
单步调试,然后转到反汇编,你很快就会明白了

使用特权

评论回复
板凳
baidudz| | 2012-7-7 23:21 | 只看该作者
运行空间是在堆栈内, 运行时实行压栈动作, 释放时出栈动作, 所以顺序是由后往前

使用特权

评论回复
地板
yybj| | 2012-7-7 23:30 | 只看该作者
局部变量存放在栈中,栈是后进先出。
如果是开辟的内存在堆,顺序是随意的。 若不释放,程序结束时可能由OS回收。
到最后也就不知道是什么样子了 。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝