溫馨提示×

溫馨提示×

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

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

C語言中變量的內存排布

發布時間:2020-08-09 12:24:03 來源:網絡 閱讀:325 作者:tresordie 欄目:系統運維

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

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

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女