[爆卦]jserv你所不知道的c語言是什麼?優點缺點精華區懶人包

為什麼這篇jserv你所不知道的c語言鄉民發文收入到精華區:因為在jserv你所不知道的c語言這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Kuba4ma ()看板C_and_CPP標題[問題] 你所不知道的C語言:函式呼叫篇時間Sun...


https://reurl.cc/ZXWRl3

在「從遞迴觀察函式呼叫」這個part,我的理解如下
用static int count去統計有多少個stack frame (或是遞迴執行多少次)
在func內增加local variable後,因為stack frame內要多塞4 byte的 y ,所以stack
frame變大,count變小
目前為止還看得懂
但是我不懂下面這段為什麼135168要乘以4

```
60000Hex - 3f000Hex = 21000Hex = 135168Dec
135168 * 4 = 540672
這跟前面的數字很接近!
```

135168不是代表stack大小嗎? 乘以4是代表什麼意思


看完jserv的影片後還是不懂,麻煩各位解惑,謝謝

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.204.54.161 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1678592802.A.02B.html
FanFlyAway: 這裡的 4 應該是指每個 int 會占用 4 bytes 03/12 12:13
Kuba4ma: 我的理解是524092是進到stack的次數,135168是整個stack 03/12 13:25
Kuba4ma: 的大小(單位是byte),但把整個stack大小乘以4的目的是什 03/12 13:25
Kuba4ma: 麼?stack的大小不是固定的嗎? 03/12 13:25
KaryuuIssen: 可能寫錯了吧 我覺得寫174697*3=524091接近比較合理 03/12 17:37
KaryuuIssen: 畢竟第三個版本的func的stack frame是第一個版本的 03/12 17:38
KaryuuIssen: 三倍大 03/12 17:38
KaryuuIssen: 而且這裡的135168是pid=1程序的stack size 跟跑迴圈 03/12 17:40
KaryuuIssen: 的程序的stack size沒什麼關係 03/12 17:40
KaryuuIssen: 修正一下用詞 是遞迴不是迴圈 03/12 17:41
LPH66: 同意樓上, 可能原作者不知道所以把它們隨意關連在一起了 03/12 19:58
stupid0319: 這樣搞還不如用ollydbg去實際看看程式怎麼跑 03/12 21:17
seanwu: 想算stack size要在assembly下看才有意義,不然編譯器可能 03/13 00:44
seanwu: 都最佳化掉了,另外大部份abi下stack pointer會有不同的al 03/13 00:44
seanwu: ignment要求,實際上會佔得比local variable多一點 03/13 00:44

你可能也想看看

搜尋相關網站