zoukankan      html  css  js  c++  java
  • 全局变量与局部变量的特点

    全局变量的特点

      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 }    

  • 相关阅读:
    shell语句for循环
    ls命令详解
    计算机相关概念总结(3)
    计算机相关概念总结(2)
    计算机相关概念总结(1)
    devops的概念
    jenkins无法连接gitlab
    Jenkins创建镜像后无法推送到harbor的问题
    Jenkins+gitlab+maven持续集成
    jenkins打完包在哪里
  • 原文地址:https://www.cnblogs.com/Reverse-xiaoyu/p/11620321.html
Copyright © 2011-2022 走看看