看板 C_and_CPP 關於我們 聯絡資訊
我來答看看, 請高手修正 ※ 引述《peacecorner (說謊的沒海鷗)》之銘言: : 1.一個程式在執行時,其data area 可分作兩部份:heap 與call stack, : 請問call stack 與heap 各是做什麼用的 Heap 是給 global, static 變數放的地方, malloc (new) 出來的變數也是放這裏 call stack 是 local 變數放的地方, function 相關的 data (如參數) 也是 : 2.接續上題,請解釋function 的呼叫(與function call 的return) : 與call stack 的“消長”(i.e., shrink and grow)有何關聯? call 一個 function 就會需要一塊 stack 放置相關的 data. return 時, release 這塊. (不過, 我一直對 "return 的值" 是放在哪裏, 幾時會 release 一直不清楚, 有請高手) : 小弟已經在網路查過了 但是沒有查到 : 我知道heap 與call stack分別是堆積與呼叫堆疊 : 也知道函式在呼叫的時候會將指令位址存入堆疊 : 等到return時再從堆疊取出 : 但是跟data area扯上關係我就不會解釋了 : 第一題不會 第二題就不知道怎麼解釋了 : 有沒有高手可以給小弟一個完整的答案呢?? : PS:這兩題不是作業,拜託高手回答一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.71.48
pponywong:return 一般是放在 eax register (intel) ..但是用 02/10 11:20
pponywong:指標的話是放在記憶體...stack release 是直接減去 02/10 11:21
pponywong:stack frame pointer 02/10 11:21
pponywong:stack就真的是stack...call function時會往上堆 02/10 11:22
pponywong:function return 時就減去 frame size 02/10 11:22