為了讓小伙伴們能循序漸進地學習C語言,今天武林技術頻道的小編就給各位帶來這篇從匯編看c++中變量類型的解析,有助于我們更好的了解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分配的??臻g
??? pop??? ebp
??? ret??? 0
_main??? ENDP
_TEXT??? ENDS
從匯編語言中可以看到,全局變量i的內存分配在內存中的數據區(由_DATA指定),因此在程序運行的過程中始終存在,所以對于程序中的所有部分都可以訪問,而且隨著程序的結束銷毀;而局部變量j的內存是在運行main函數中在棧上動態分配,而且main函數結束后,此空間被釋放,因此在main函數外面不能訪問局部變量j。
?
實際上,在操作系統載入可執行文件的時候,它首先將數據區中的數據載入相應的內存,然后才開始運行程序,因此,全局變量產生在文件加載之后,第一條程序語言執行之前。
以上就是從匯編看C++中變量類型的解析,C++很強大,我們還要繼續學習和研究。 更多關于C++的內容,請繼續關注武林技術頻道。
新聞熱點
疑難解答
圖片精選