推 school4303: 因為這樣宣告是在stack裡 記憶體是從大的往小的要07/20 14:07
推 KaryuuIssen: 你看反了 a3是0x62fe40~48 a1是0x62fe3c~4007/20 14:07
→ school4303: a3是40-4707/20 14:07
→ KaryuuIssen: 恩 不包含結尾07/20 14:09
→ nh60211as: 你自己先畫出來看吧,你都說int是4bytes07/20 14:11
我知道區域變數是存stack裡面,但有點搞不清楚實際操作的儲存方式。
所以我一開始的觀念是第一張圖
https://i.imgur.com/jIzBkvZ.jpg
但是實際操作的時候正確的觀念應該是第二張圖對吧?
https://i.imgur.com/u7whltJ.jpg
如果還有錯,請各位指教!
謝謝
※ 編輯: OnlyCourage (49.218.65.223 臺灣), 07/20/2019 14:51:09
→ school4303: 對 是圖二沒錯 只是你a2a5的位址標錯07/20 17:04
喔對!我打錯了,應該是0x62fe38, 0x62fe34!感謝!
不過我有遇到另一個問題了!
double a1;
int a2;
print出來是
a1>0x62fe48
a2>0x62fe44
這邊沒有問題,但是反過來宣告就怪了
int a1;
double a2;
print出來是
a1>0x62fe4c
a2>0x62fe40
變成a2原本佔得記憶體為8bytes,卻變成12bytes,理論上a2應該要是0x62fe44不是嗎?
謝謝各位
※ 編輯: OnlyCourage (49.218.65.223 臺灣), 07/20/2019 18:09:20
→ nh60211as: 你試試這個程式碼,應該要看記憶體實際的內容 07/20 19:43
→ nh60211as: 不要猜他的記憶體位置塞了什麼東西 07/20 19:43
→ nh60211as: 最好的方法應該是找個可以看記憶體的debugger 07/20 19:47
噓 loveme00835: 宣告不佔記憶體 07/20 19:49
推 KaryuuIssen: 對齊問題 0x62fe40才能被8整除 07/22 17:03