全局变量与局部变量的特点
Posted reverse-xiaoyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局变量与局部变量的特点相关的知识,希望对你有一定的参考价值。
全局变量的特点
1、全局变量在程序编译完成后地址就已经确定下来了,只要程序启动,全局变量就已经存在了,启动后里面是否有值取决于声明时是否给定了初始值,如果没有,默认为0
2、全局变量的值可以被所有函数所修改,里面存储的是最后一次修改的值.
3、全局变量所占内存会一直存在,知道整个进程结束.
4、全局变量的反汇编识别:
MOV 寄存器,byte/word/dword ptr ds:[0x12345678]
通过寄存器的宽度,或者byte/word/dword 来判断全局变量的宽度
全局变量就是所谓的基址
1 int g_n = 10;
2 int Function()
3
4 int x = 2;
5 int y = 3;
6
7 return g_n+x+y;
8
9 int Function2()
10
11
12 int y = 3;
13
14 return g_n+x+y;
15
局部变量的特点:
1、局部变量在程序编译完成后并没有分配固定的地址.
2、在所属的方法没有被调用时,局部变量并不会分配内存地址,只有当所属的程序被调用了,才会在堆栈中分配内存.
3、当局部变量所属的方法执行完毕后,局部变量所占用的内存将变成垃圾数据.局部变量消失.
4、局部变量只能在方法内部使用,函数A无法使用函数B的局部变量.
5、局部变量的反汇编识别:
[ebp-4]
[ebp-8]
[ebp-0xC]
1 int Function()
2
3 int x = 2;
4 int y = 3;
5
6 return g_n+x+y;
7
8 int Function2()
9
10 int x = 3;
11 int y = 4;
12
13 return g_n+x+y;
14
以上是关于全局变量与局部变量的特点的主要内容,如果未能解决你的问题,请参考以下文章