當前位置:編程學習大全網 - 源碼下載 - 全局變量和局部變量有什麽區別?是怎麽實現的?

全局變量和局部變量有什麽區別?是怎麽實現的?

1、 全局變量的作用用這個程序塊,而局部變量作用於當前函數;

2、前者在內存中分配在全局數據區,後者分配在棧區;

3、 生命周期不同:全局變量隨主程序創建和創建,隨主程序銷毀而銷毀,局部變量在局部函數內部,甚至局部循環體等內部存在,退出就不存在;

4、 使用方式不同:通過聲明後全局變量程序的各個部分都可以用到,局部變量只能在局部使用

操作系統和編譯器通過內存分配的位置來知道的全局變量分配在全局數據段,並且在程序被運行的時候就被加載。;

編譯器通過語法詞法的分析,判斷出是全局變量還是局部變量。如果是全局變量的話,編譯器在將源代碼翻譯成二進制代碼時就為全局變量分配好壹個虛擬地址 (windows下0x00400000以上的地址,也就是所說的全局區),所以程序在對全局變量的操作時是對壹個硬編碼的地址操做。?

局部變量的話,編譯時不分配空間,而是以相對於ebp或esp的偏移來表示局部變量的地址,所以局部變量內存是在局部變量所在的函數被調用時才真正分配。 以匯編的角度來看:函數執行時,局部變量在棧中分配,函數調用完畢釋放局部變量對應的內存,另外局部變量可以直接分配在寄存器中。

操作系統通過變量的分配地址就可以判斷出是局部變量和全局變量。

  • 上一篇:什麽是apache服務器
  • 下一篇:如何在網站上木馬如何在網站上木馬病毒檢測
  • copyright 2024編程學習大全網