读书人

局部变量脱离区域后为啥依然占用内存空

发布时间: 2013-04-20 19:43:01 作者: rapoo

局部变量脱离区域后为什么依然占用内存空间
#include <iostream>
using namespace std;
void main()
{
if(!0)
{
int a;
cout<<(int)&a<<endl; //1、 ---比如为1245052
}

int b;
cout<<(int)&b<<endl;//2、---比如为1245048

int c;
cout<<(int)&c<<endl;

}
大家可以看到在1的位置为1245052,理论上说a在脱离if体后,a在栈的内存会被释放调,为什么在2的位置居然输出不是1245052而是1245048,说明a还占用着内存。。。怎么解释。。
[解决办法]
其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。

[解决办法]

引用:
其他的类似什么时候分配内存 什么时候释放内存 同一块内存什么时候分配 什么时候再分配 这样的东西 猜不到的

对于各种不同的平台, 不同的编译器, 肯定错误的, 而且是猜不到的.
但对于我正在使用的编译器, 我是可以猜到它会给我生成什么样的代码的. 而且我还可以查看它是不是生成的这样的代码.
这种用法毫无疑问是错误的, 但是用它来理解一下函数变量的实现并无不妥.

读书人网 >C++

热点推荐