99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談C語(yǔ)言中數(shù)組在內(nèi)存的存在形式

嵌入式應(yīng)用開(kāi)發(fā) ? 來(lái)源:嵌入式應(yīng)用開(kāi)發(fā) ? 作者:嵌入式應(yīng)用開(kāi)發(fā) ? 2022-09-28 14:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

經(jīng)典的Linux進(jìn)程內(nèi)存布局,如下圖:

pYYBAGMz7YaACxISAAEprYrRtbU873.png

整個(gè)內(nèi)存空間包括棧區(qū),全局區(qū),堆區(qū)。

void arr_on_stack() {
    int arr[6];
  
    arr[0]=100;
    arr[1]=200;
    arr[2]=300;
    arr[3]=400;
    arr[4]=500;
    arr[5]=600;

    int a = arr[0];
}

我們定義了一個(gè)局部變量arr作為int類(lèi)型的數(shù)組,然后分別將100-600寫(xiě)到了數(shù)組中。那么,數(shù)組arr在內(nèi)存中是怎樣表示的呢?

首先,我們編譯一下:

#gcc-g-fno-stack-protectora.c

注意,-fno-stack-protector選項(xiàng)是為了禁止堆棧保護(hù),讓匯編更容易懂些。使用gdb測(cè)試代碼運(yùn)行情況,gdb面前程序的運(yùn)行時(shí)(run time)了無(wú)秘密。用gdb來(lái)調(diào)試剛剛編譯出來(lái)的程序,這里看一下arr_on_stack函數(shù)的匯編指令:

(gdb) disassemble arr_on_stack
Dump of assembler code for function arr_on_stack:
   0x0000000000400526 <+0>:     push   %rbp
   0x0000000000400527 <+1>:     mov    %rsp,%rbp
   0x000000000040052a <+4>:     movl   $0x64,-0x20(%rbp)
   0x0000000000400531 <+11>:    movl   $0xc8,-0x1c(%rbp)
   0x0000000000400538 <+18>:    movl   $0x12c,-0x18(%rbp)
   0x000000000040053f <+25>:    movl   $0x190,-0x14(%rbp)
   0x0000000000400546 <+32>:    movl   $0x1f4,-0x10(%rbp)
   0x000000000040054d <+39>:    movl   $0x258,-0xc(%rbp)
=> 0x0000000000400554 <+46>:    mov    -0x20(%rbp),%eax
   0x0000000000400557 <+49>:    mov    %eax,-0x4(%rbp)
   0x000000000040055a <+52>:    nop
   0x000000000040055b <+53>:    pop    %rbp
   0x000000000040055c <+54>:    retq
End of assembler dump.
poYBAGMz7rCAOLCOAAF3C6ObOtM017.png
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11508

    瀏覽量

    213644
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3119

    瀏覽量

    75228
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141534
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    小數(shù)在內(nèi)存中是如何存儲(chǔ)的?為什么C語(yǔ)言中的浮點(diǎn)數(shù)不支持位移操作?

    小數(shù)在內(nèi)存中是如何存儲(chǔ)的?為什么C語(yǔ)言中的浮點(diǎn)數(shù)不支持位移操作?
    發(fā)表于 08-16 09:24 ?1325次閱讀
    小數(shù)<b class='flag-5'>在內(nèi)存</b>中是如何存儲(chǔ)的?為什么<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b>的浮點(diǎn)數(shù)不支持位移操作?

    C語(yǔ)言中數(shù)組和結(jié)構(gòu)體的內(nèi)存表示和布局

    C語(yǔ)言中,數(shù)組和結(jié)構(gòu)體都可以代表一塊內(nèi)存,但為什么結(jié)構(gòu)體可以直接賦值,而數(shù)組不可以?這個(gè)問(wèn)題涉及到C
    發(fā)表于 08-28 10:54 ?2139次閱讀

    C語(yǔ)言中數(shù)組的用法

    C語(yǔ)言數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它可以存儲(chǔ)多個(gè)相同類(lèi)型的數(shù)據(jù),例如整數(shù),字符,浮點(diǎn)數(shù)等。數(shù)組的每個(gè)元素都有一個(gè)索引,用來(lái)表示它在數(shù)組中的位置。
    的頭像 發(fā)表于 11-24 17:48 ?1698次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b><b class='flag-5'>數(shù)組</b>的用法

    C語(yǔ)言中怎么判斷數(shù)組元素的個(gè)數(shù)

    C語(yǔ)言中怎么判斷數(shù)組元素的個(gè)數(shù),如數(shù)組:int array[]={45,56,76,234,1,34,23,2,3};
    發(fā)表于 05-26 11:49

    如何使用單片機(jī)的C語(yǔ)言中數(shù)組?

    如何使用單片機(jī)的C語(yǔ)言中數(shù)組
    發(fā)表于 10-15 08:59

    C語(yǔ)言中的char數(shù)組和char指針有什么區(qū)別?

    讓我們通過(guò)下面的例子,來(lái)了解 C語(yǔ)言中字符數(shù)組和字符指針之間的區(qū)別。
    的頭像 發(fā)表于 01-29 16:35 ?3207次閱讀

    C語(yǔ)言中數(shù)組空間動(dòng)態(tài)開(kāi)辟

    C語(yǔ)言中數(shù)組空間動(dòng)態(tài)開(kāi)辟 在C語(yǔ)言中,必不可少的需要使用到數(shù)組,通常為了動(dòng)態(tài)的開(kāi)辟
    的頭像 發(fā)表于 02-10 12:42 ?2481次閱讀

    C語(yǔ)言中數(shù)組在內(nèi)存中如何表示

    C語(yǔ)言中數(shù)組在內(nèi)存中是怎樣表示的,今天就給大家聊聊這個(gè)話(huà)題。
    的頭像 發(fā)表于 02-15 14:35 ?1168次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b><b class='flag-5'>數(shù)組</b><b class='flag-5'>在內(nèi)存</b>中如何表示

    C語(yǔ)言中什么是指針數(shù)組

    C語(yǔ)言中一個(gè)數(shù)組,若其元素均為指針類(lèi)型數(shù)據(jù),稱(chēng)為指針數(shù)組,也就是說(shuō),指針數(shù)組中的每一個(gè)元素都存放一個(gè)地址,相當(dāng)于一個(gè)指針變量。
    的頭像 發(fā)表于 03-10 15:26 ?2228次閱讀

    C語(yǔ)言怎么建立內(nèi)存的動(dòng)態(tài)分配

    C語(yǔ)言中,全局變量是分配在內(nèi)存中的靜態(tài)存儲(chǔ)區(qū)的,非靜態(tài)的局部變量,包括形參是分配在內(nèi)存中的動(dòng)態(tài)存儲(chǔ)區(qū)的,這個(gè)存儲(chǔ)區(qū)是一個(gè)“棧”的區(qū)域。
    的頭像 發(fā)表于 03-10 15:30 ?1093次閱讀

    c語(yǔ)言數(shù)組中查找指定元素

    C語(yǔ)言是一種通用的編程語(yǔ)言,廣泛應(yīng)用于各種領(lǐng)域,包括嵌入式系統(tǒng)、操作系統(tǒng)、游戲開(kāi)發(fā)等。在C語(yǔ)言中,數(shù)組
    的頭像 發(fā)表于 11-24 10:07 ?5149次閱讀

    C語(yǔ)言如何創(chuàng)建數(shù)組

    C語(yǔ)言是一種非常強(qiáng)大和靈活的編程語(yǔ)言,它提供了若干數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ)和操作數(shù)據(jù)。其中之一就是數(shù)組,它可以用來(lái)存儲(chǔ)一系列具有相同數(shù)據(jù)類(lèi)型的元素。本文將詳細(xì)介紹如何在
    的頭像 發(fā)表于 11-24 10:08 ?2547次閱讀

    c語(yǔ)言中數(shù)組怎么定義

    C語(yǔ)言中數(shù)組是一種用來(lái)存儲(chǔ)相同類(lèi)型元素的數(shù)據(jù)結(jié)構(gòu)。它可以存儲(chǔ)多個(gè)元素,并通過(guò)一個(gè)共同的名稱(chēng)來(lái)引用這些元素。數(shù)組是一種很重要的數(shù)據(jù)結(jié)構(gòu),可以用于解決很多實(shí)際的問(wèn)題。 在
    的頭像 發(fā)表于 11-24 10:11 ?3862次閱讀

    c語(yǔ)言中多維數(shù)組可以嵌套定義

    C語(yǔ)言中多維數(shù)組可以嵌套定義,這使得我們可以在一個(gè)數(shù)組中存儲(chǔ)另一個(gè)數(shù)組。通過(guò)這種方式,我們可以創(chuàng)建更加復(fù)雜和靈活的數(shù)據(jù)結(jié)構(gòu),以便更好地表示和
    的頭像 發(fā)表于 11-24 10:18 ?1595次閱讀

    數(shù)組和鏈表在內(nèi)存中的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)

    數(shù)組和鏈表在內(nèi)存中的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)? 數(shù)組和鏈表是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),用于組織和存儲(chǔ)數(shù)據(jù)。它們在內(nèi)存中的存儲(chǔ)方式以及優(yōu)缺點(diǎn)方面
    的頭像 發(fā)表于 02-21 11:30 ?1529次閱讀