最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從匯編看c++中變量類型的深入分析

 更新時(shí)間:2013年05月12日 14:04:29   作者:  
本篇文章是對(duì)c++中的變量類型進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下

全局變量的生命期和可見(jiàn)性是整個(gè)程序的運(yùn)行期間,下面就來(lái)用匯編來(lái)看一下實(shí)際情況:

c++源碼:

復(fù)制代碼 代碼如下:

int i = 2;//全局變量

int main() {
    int j = i;
}

下面是匯編代碼:

復(fù)制代碼 代碼如下:

PUBLIC    ?i@@3HA                        ; i
_DATA    SEGMENT
?i@@3HA    DD    02H                    ; 全局變量i內(nèi)存空間
_DATA    ENDS
PUBLIC    _main
; Function compile flags: /Odtp
; File c:\users\administrator\desktop\c++\test\a.cpp
_TEXT    SEGMENT
_j$ = -4                        ; size = 4
_main    PROC

; 3    : int main() {

    push    ebp
    mov    ebp, esp
    push    ecx;為局部變量分配4字節(jié)存儲(chǔ)區(qū)

; 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;//棧頂指針恢復(fù),釋放為j分配的??臻g
    pop    ebp
    ret    0
_main    ENDP
_TEXT    ENDS


從匯編語(yǔ)言中可以看到,全局變量i的內(nèi)存分配在內(nèi)存中的數(shù)據(jù)區(qū)(由_DATA指定),因此在程序運(yùn)行的過(guò)程中始終存在,所以對(duì)于程序中的所有部分都可以訪問(wèn),而且隨著程序的結(jié)束銷毀;而局部變量j的內(nèi)存是在運(yùn)行main函數(shù)中在棧上動(dòng)態(tài)分配,而且main函數(shù)結(jié)束后,此空間被釋放,因此在main函數(shù)外面不能訪問(wèn)局部變量j。

實(shí)際上,在操作系統(tǒng)載入可執(zhí)行文件的時(shí)候,它首先將數(shù)據(jù)區(qū)中的數(shù)據(jù)載入相應(yīng)的內(nèi)存,然后才開(kāi)始運(yùn)行程序,因此,全局變量產(chǎn)生在文件加載之后,第一條程序語(yǔ)言執(zhí)行之前。

相關(guān)文章

最新評(píng)論

万载县| 邯郸县| 禹州市| 鄂尔多斯市| 托里县| 大同县| 喀喇沁旗| 澄迈县| 米脂县| 繁昌县| 平泉县| 徐水县| 阿克| 武山县| 中西区| 咸阳市| 龙陵县| 安化县| 浙江省| 内丘县| 岳阳市| 两当县| 吉安县| 临海市| 碌曲县| 正定县| 彰化县| 沁阳市| 潼南县| 故城县| 电白县| 富民县| 香河县| 绥化市| 锡林郭勒盟| 长春市| 那坡县| 文山县| 兴义市| 汉源县| 灯塔市|