原諒我,如果這是一個愚蠢的問題,但我怕我不知道'堆'是什麼。什麼是'堆棧',因爲它與.Net
我知道什麼是「堆」是,我已經學會了FILO/FIFO的縮寫。但是當人們說'價值類型被分配到堆棧而不是堆'時 - 恐怕我不知道這意味着什麼。
當我介紹了一個邏輯錯誤成一個遞歸函數 - 我無法分配更多的內存來「堆」和我的應用程序崩潰....但我真的不明白它是什麼。
我想谷歌的答案,但只發現了「堆棧」,以及如何使用一個信息。
當我運行一個.net應用程序 - 它創建一個單獨的「棧實例」充當「堆棧」?我見過堆棧跟蹤,顯示代碼的執行級別 - 大多數情況下,當我遇到一個不受歡迎的異常時......但我記得能夠看到的是他們所調用的方法和順序......不會堆棧的每個步驟都有範圍內的所有變量。
也許我只是愚蠢 - 但我想我可以想象一個遞歸函數的情況,它可以方便地查看變量的前一個值 - 從'堆棧'但不需要傳遞它在。
不知道如果這是有道理的 - 這是非常晚。但我真的很感謝任何人的信息。
當你不能分配任何更多的內存,我猜,是由具有無限遞歸,這將意味着在某些時候造成的,電腦不會有足夠的內存來計算遞歸。 – 2010-01-10 07:48:14
短語*「值類型在堆棧上分配」*不完全準確。看到這裏的更多信息:http://stackoverflow.com/questions/1130468/memory-allocation-of-value-types-and-reference-types-in-net-framework – 2010-01-10 07:51:33
順便說一句,「堆與堆棧」 ,這裏是一個簡短的總結:http://ee.hawaii.edu/~tep/EE160/Book/chap14/subsection2.1.1.8.html – 2010-01-10 07:53:48