程序中某一固定变量的内存地址会因为运行环境的改变而变么?会怎么变?怎么锁定这个变量?

如题所述

举个例子来说,你写了个a.exe程序,这一次运行a.exe程序系统分配给他的起始内存空间地址是4012FF00,那么这个变量在开辟空间的时候,可能之前已经定义了一些变量或者其它结构占用了7C的空间,则这个变量地址为4012FF7C,偏移地址为0012FF7C;关掉这个程序,再开它,则可能进程地址变为了5012FF00,那么这个变量的物理地址就为5012FF00,偏移地址仍旧为0012FF7C。 但是也不是说这个偏移地址是一成不变的,这涉及到这个变量的开辟时是不是总是固定在一个顺序上,例如我写个函数像这样:void aa(int m){ if(m>5) { int x=2;int y=3;int z=0;z=x+z; } else { int z=2;int x=3;int y=0;y=x+z; }}那么显然x这个变量的开辟时间点取决于变量m的大小,则开辟的先后也决定了x这个变量的地址,所以这些变量是动态变化的,如果涉及到结构和类的成员变量,还需要考虑这个结构或类对象的创建次序,这需要涉及到一些底层的思想旋律 的感言: 汇编的知识我还没接触,短时间内也不会接触的了!不过这也是对我以后有帮助的!
温馨提示:答案为网友推荐,仅供参考
相似回答