[問題] 記憶體配置地址問題

看板C_and_CPP (C/C++)作者 ( )時間14年前 (2011/10/06 14:53), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
先貼code https://gist.github.com/1266690 程式output: 4 0x64f5fc54 0x64f5fc53 0x64f5fc4c (我的環境是mac os & gcc compiler) (如果在不同環境的話除了值不一樣以外 性質會一樣嗎?) 一直搞不懂在記憶體配置上地址分配的問題 (以下有任何錯煩請更正我 小弟虛心受教) a b c 三個變數是配置在 stack 上 對於一個stack(容器)來說 是從最下面開始配置 越下面的是表示高位元組 越上面是低位元組這樣嗎? &a 代表的是a這個4bytes空間中的第一個位置 ?? 我心裡是這樣想 但是看到output覺得很怪 a佔有4bytes 第一個位元址是0x64f5fc54 理應來說佔有4bytes 可是為什麼b的address是0x64f5fc53 超怪的......... 有高手可以解釋整個流程嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.51.107

10/06 14:58, , 1F
沒有規定說先宣告的變數就要放在前面, 編譯器先宣告 b 了
10/06 14:58, 1F

10/06 14:59, , 2F
不同變數之間的記憶體順序和連續性本來就沒有任何保證
10/06 14:59, 2F

10/06 15:00, , 3F
應該是說,除非你用array.不然他也沒必要做連續記憶體的
10/06 15:00, 3F

10/06 15:01, , 4F
動作.如果你剛好看到是連續的位置.只是剛好.
10/06 15:01, 4F
※ 編輯: k0783154 來自: 140.112.51.107 (10/06 15:10)

10/08 01:05, , 5F
a 54~58 b 53~54 c 4c~53
10/08 01:05, 5F
文章代碼(AID): #1EZL25yj (C_and_CPP)
文章代碼(AID): #1EZL25yj (C_and_CPP)