看板 C_and_CPP 關於我們 聯絡資訊
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
QQ29:release好像結果比較正確 但是配置不照宣告順序@@ why 11/15 17:03
stupid0319:我猜配置是 SUB ESP,10 11/15 17:17
littleshan:這牽涉到alignment,標準並不會規定compiler怎麼配置 11/15 17:41
softwind:只要不是array, 問auto var的address關係都很奇怪... 11/15 22:49
loveflames:從高到低來看,stack結構是parameter、ret addr、(FP) 11/15 22:57
loveflames:、local var、reg value,中間可能參雜alignment 11/15 22:58
loveflames:local怎麼排就要看compiler了,沒開最加化的話,應該都 11/15 23:00
loveflames:是越後面的local位址越低 11/15 23:00
QQ29:release印 會發現 他不會照著越後面越低的方式百耶 11/15 23:30
purpose:反正那整塊連續位址都拿來放區域變數的,用什麼順序都好 11/15 23:36
king19880326:為什麼不讀書 11/16 21:35
king19880326:順帶一提, printf不是探究系統內部的好方法, 你該用 11/16 21:37
king19880326:一些 binary utilities(ex. binutils) 11/16 21:37
aecho:我記得只有教科書會說stack和heap是往相反的方向長~~ 11/16 22:02
aecho:但實際上是不一定的。 11/16 22:04
loveflames:回樓上,那種只能在unix/linux下才適用 11/16 22:39
loveflames:windows heap的實作是分成多塊,且用串接的方式連接, 11/16 22:49
loveflames:位址不連續 11/16 22:49