原谅我,如果这是一个愚蠢的问题,但我怕我不知道'堆'是什么。什么是'堆栈',因为它与.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