[問題] stack記憶體配置問題

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間15年前 (2010/11/15 16:52), 編輯推噓6(6012)
留言18則, 8人參與, 最新討論串1/2 (看更多)
int main() { BYTE xb = 1; double xb2 = 2; BYTE xb3 = 2; printf("%p , %p , %p", &xb , &xb2, &xb3); return 0; } 為啥 印出來差距是 19 和 9 xb和xb2相差19... xb2和xb3相差9 實在無法理 請教各位 thx.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66

11/15 17:03, , 1F
release好像結果比較正確 但是配置不照宣告順序@@ why
11/15 17:03, 1F

11/15 17:17, , 2F
我猜配置是 SUB ESP,10
11/15 17:17, 2F

11/15 17:41, , 3F
這牽涉到alignment,標準並不會規定compiler怎麼配置
11/15 17:41, 3F

11/15 22:49, , 4F
只要不是array, 問auto var的address關係都很奇怪...
11/15 22:49, 4F

11/15 22:57, , 5F
從高到低來看,stack結構是parameter、ret addr、(FP)
11/15 22:57, 5F

11/15 22:58, , 6F
、local var、reg value,中間可能參雜alignment
11/15 22:58, 6F

11/15 23:00, , 7F
local怎麼排就要看compiler了,沒開最加化的話,應該都
11/15 23:00, 7F

11/15 23:00, , 8F
是越後面的local位址越低
11/15 23:00, 8F

11/15 23:30, , 9F
release印 會發現 他不會照著越後面越低的方式百耶
11/15 23:30, 9F

11/15 23:36, , 10F
反正那整塊連續位址都拿來放區域變數的,用什麼順序都好
11/15 23:36, 10F

11/16 21:35, , 11F
為什麼不讀書
11/16 21:35, 11F

11/16 21:37, , 12F
順帶一提, printf不是探究系統內部的好方法, 你該用
11/16 21:37, 12F

11/16 21:37, , 13F
一些 binary utilities(ex. binutils)
11/16 21:37, 13F

11/16 22:02, , 14F
我記得只有教科書會說stack和heap是往相反的方向長~~
11/16 22:02, 14F

11/16 22:04, , 15F
但實際上是不一定的。
11/16 22:04, 15F

11/16 22:39, , 16F
回樓上,那種只能在unix/linux下才適用
11/16 22:39, 16F

11/16 22:49, , 17F
windows heap的實作是分成多塊,且用串接的方式連接,
11/16 22:49, 17F

11/16 22:49, , 18F
位址不連續
11/16 22:49, 18F
文章代碼(AID): #1CuFJ9xS (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CuFJ9xS (C_and_CPP)