作者snoopy0907 (我是男的喔~^0^")
看板C_and_CPP
標題[問題] 函式的一個觀念問題
時間Wed Nov 4 13:20:12 2009
想請問一下前輩們
問題有點長...不好意思了
問題:
當我在主程式宣告一個函式時
系統是會預先配置一塊固定的記憶體空間大小給這個函式嗎?
還是是要看函式內部資料所使用的記憶體加總呢?
假如是一開始會先配置(如果這個成立的話)
那又假如我函式內部是有遞迴的程式碼
萬一遞迴所需求的記憶體超過一開始配置的話
系統會再自動配置嗎?還是就這樣爆開了~
觀念有點不太清楚...先謝謝各位指點
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.231.109.23
1F:→ legnaleurc:函式沒空間吧 ... 只有一個指標指向 entry point 11/04 13:22
2F:推 VictorTom:嚴格的來說還是有空間, 指標指向的entry point就是那段 11/04 13:23
3F:→ VictorTom:函式佔用空間的起始點不是嗎@_@" 11/04 13:23
4F:推 twotwoone:到底想問什麼 11/04 13:24
5F:→ VictorTom:像這個case似乎也是nested func, 之前的文也有人推文討 11/04 13:24
6F:→ VictorTom:論認為nested func會省記憶體, 不過小弟不認為會就是因 11/04 13:25
7F:→ VictorTom:為func也是佔用mem的, nested的好處總覺得只有scope. 11/04 13:25
8F:→ VictorTom:另外就算有遞迴, 會一直佔用新空間的應該也是stack, 或 11/04 13:26
9F:→ VictorTom:者func內自己有其他mem的耗用, 印象中func body除非被 11/04 13:26
10F:→ VictorTom:展開, 不然mem裡只需要一份@_@" 11/04 13:27
11F:→ VictorTom:哪天有空再拿VC disasm一個nested func的例子好了Orz 11/04 13:27
12F:→ snoopy0907:謝謝,大概知道了..因為我把函式想成像一個物件~ 11/04 13:40
13F:→ snoopy0907:而其實函式只是一個敘述的集合..沒有佔實體空間 11/04 13:41
14F:→ snoopy0907:真的會佔使用到空間的是內部的指令 11/04 13:42
15F:推 QQ29:請問V大 nested function是不是VC不能用? 之前想試試看 11/04 13:46
16F:→ QQ29:都說"區域函式定義不合法"??是我搞錯了嗎 11/04 13:46
17F:推 VictorTom:C++嗎??剛用DevC++也不行, 寫C的話就可以了@_@" 11/04 13:59
18F:推 QQ29:恩~之前是印象中看過奇怪為啥要這樣在local寫function 11/04 14:01
19F:→ QQ29:自己想試試看卻都一直出錯 以為我記錯了.... 11/04 14:01
20F:→ QQ29:之前是想測試為啥說function預設都是extern..但只限定global 11/04 14:02
21F:→ QQ29:卻找不到反例 測不出來@@ 11/04 14:02