看板 C_and_CPP 關於我們 聯絡資訊
先貼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
uranusjr:沒有規定說先宣告的變數就要放在前面, 編譯器先宣告 b 了 10/06 14:58
uranusjr:不同變數之間的記憶體順序和連續性本來就沒有任何保證 10/06 14:59
angleevil:應該是說,除非你用array.不然他也沒必要做連續記憶體的 10/06 15:00
angleevil:動作.如果你剛好看到是連續的位置.只是剛好. 10/06 15:01
※ 編輯: k0783154 來自: 140.112.51.107 (10/06 15:10)
Kerick:a 54~58 b 53~54 c 4c~53 10/08 01:05