时间:2021-04-04 10:14:27 | 栏目:C代码 | 点击:次
全局变量的生命期和可见性是整个程序的运行期间,下面就来用汇编来看一下实际情况:
c++源码:
int main() {
int j = i;
}
下面是汇编代码:
; 3 : int main() {
push ebp
mov ebp, esp
push ecx;为局部变量分配4字节存储区
; 4 : int j = i;
mov eax, DWORD PTR ?i@@3HA ; 获取全局变量i的的值
mov DWORD PTR _j$[ebp], eax;eax存有i的值,将它赋给局部变量j
; 5 : }
xor eax, eax
mov esp, ebp;//栈顶指针恢复,释放为j分配的栈空间
pop ebp
ret 0
_main ENDP
_TEXT ENDS
实际上,在操作系统载入可执行文件的时候,它首先将数据区中的数据载入相应的内存,然后才开始运行程序,因此,全局变量产生在文件加载之后,第一条程序语言执行之前。