亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                全局變量和局部變量在內(nèi)存中的區(qū)別

                全局變量保存在內(nèi)存的全局存儲區(qū)中,占用靜態(tài)的存儲單元局部變量保存在棧中,只有在所在函數(shù)被調(diào)用時(shí)才動(dòng)態(tài)地為變量分配存儲單元。

                C語言經(jīng)過編譯之后將內(nèi)存分為以下幾個(gè)區(qū)域:

                (1)棧(stack):由編譯器進(jìn)行管理,自動(dòng)分配和釋放,存放函數(shù)調(diào)用過程中的各種參數(shù)、局部變量、返回值以及函數(shù)返回地址。操作方式類似數(shù)據(jù)結(jié)構(gòu)中的棧。

                (2)堆(heap):用于程序動(dòng)態(tài)申請分配和釋放空間。C語言中的malloc和free,C++中的new和delete均是在堆中進(jìn)行的。正常情況下,程序員申請的空間在使用結(jié)束后應(yīng)該釋放,若程序員沒有釋放空間,則程序結(jié)束時(shí)系統(tǒng)自動(dòng)回收。注意:這里的“堆”并不是數(shù)據(jù)結(jié)構(gòu)中的“堆”。

                (3)全局(靜態(tài))存儲區(qū):分為DATA段和BSS段。DATA段(全局初始化區(qū))存放初始化的全局變量和靜態(tài)變量;BSS段(全局未初始化區(qū))存放未初始化的全局變量和靜態(tài)變量。程序運(yùn)行結(jié)束時(shí)自動(dòng)釋放。其中BBS段在程序執(zhí)行之前會被系統(tǒng)自動(dòng)清0,所以未初始化的全局變量和靜態(tài)變量在程序執(zhí)行之前已經(jīng)為0。

                (4)文字常量區(qū):存放常量字符串。程序結(jié)束后由系統(tǒng)釋放。

                (5)程序代碼區(qū):存放程序的二進(jìn)制代碼。

                顯然,C語言中的全局變量和局部變量在內(nèi)存中是有區(qū)別的。C語言中的全局變量包括外部變量和靜態(tài)變量,均是保存在全局存儲區(qū)中,占用永久性的存儲單元;局部變量,即自動(dòng)變量,保存在棧中,只有在所在函數(shù)被調(diào)用時(shí)才由系統(tǒng)動(dòng)態(tài)在棧中分配臨時(shí)性的存儲單元。

                鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
                用戶投稿
                上一篇 2022年6月25日 06:12
                下一篇 2022年6月25日 06:12

                相關(guān)推薦

                聯(lián)系我們

                聯(lián)系郵箱:admin#wlmqw.com
                工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息