全局變量與局部變量的特點


全局變量的特點

  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 }    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM