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

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

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

全局變量的生命期和可見性是整個程序的運行期間,下面就來用匯編來看一下實際情況:

c++源碼:

復制代碼 代碼如下:

int i = 2;//全局變量

int main() {
    int j = i;
}

下面是匯編代碼:

復制代碼 代碼如下:

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é)存儲區(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;//棧頂指針恢復,釋放為j分配的棧空間
    pop    ebp
    ret    0
_main    ENDP
_TEXT    ENDS


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

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

相關(guān)文章

最新評論

新津县| 丹凤县| 博罗县| 临汾市| 吕梁市| 武胜县| 循化| 得荣县| 玉环县| 城市| 金沙县| 定边县| 抚顺县| 吴江市| 阿拉善右旗| 武汉市| 睢宁县| 龙州县| 阜平县| 阿勒泰市| 三原县| 郸城县| 寿光市| 太康县| 台中县| 错那县| 绵阳市| 运城市| 甘谷县| 木里| 门源| 宣威市| 临泉县| 酒泉市| 沁阳市| 云阳县| 博爱县| 恩施市| 平原县| 马鞍山市| 措美县|