资源释放问题

[复制链接]
1684|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

粉丝
快速回复 在线客服 返回列表 返回顶部