溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言中變量的內(nèi)存排布

發(fā)布時間:2020-08-09 12:24:03 來源:網(wǎng)絡(luò) 閱讀:279 作者:tresordie 欄目:系統(tǒng)運(yùn)維

之前對C語言的變量在內(nèi)存中的排布有些混淆,故進(jìn)行了以下幾個方面的簡要整理(所有的實例均是基于X86 PC Ubuntu上GCC編譯的)。

  1. 變量定義時,不同的變量分配的內(nèi)存地址的增長方向
    (1) 定義兩個全局變量,在賦值編譯后打印其在內(nèi)存中分配的地址,發(fā)現(xiàn)先定義的變量被分配在內(nèi)存中的低地址中
    C語言中變量的內(nèi)存排布
    C語言中變量的內(nèi)存排布
    (2) X86 PC Ubuntu的main函數(shù)中定義變量,使用gcc編譯時查看系統(tǒng)對變量分配的內(nèi)存地址(內(nèi)存分配的增長方向是低地址到高地址)
    C語言中變量的內(nèi)存排布
  2. 結(jié)構(gòu)體實例化之后,結(jié)構(gòu)體中成員分配的內(nèi)存地址的增長方向
    (1) 定義全局結(jié)構(gòu)體且初始化,gcc編譯后查看結(jié)構(gòu)體成員內(nèi)存分配的增長方向(內(nèi)存分配的增長方向是由低向高向上增長)
    C語言中變量的內(nèi)存排布
    (2) 在main函數(shù)中對結(jié)構(gòu)體且初始化,gcc編譯后查看結(jié)構(gòu)體成員內(nèi)存分配的增長方向(內(nèi)存分配的增長方向是由低向高向上增長)
    C語言中變量的內(nèi)存排布
  3. 函數(shù)中定義變量時,使用的??臻g的內(nèi)存的增長方向
    C語言中變量的內(nèi)存排布
  4. arm在使用arm交叉編譯工具鏈時,一般的變量的內(nèi)存分配是向上增長方向的,但是對于棧上的內(nèi)存分配時采用的滿減棧的方式對棧上內(nèi)存分配給變量使用的,棧的生長方向時向下生長方向的.
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI