我需要将递归函数转换为堆栈形式,因为我的程序最终会出现堆栈溢出。我正在使用Unity3D C#,在某个地方我看到它的大小就像程序的5MB大小。
我的问题是,对项目的引用堆栈是保存在堆上还是仍然在堆栈中?我想很明显它会在堆上,但我不清楚为什么。
谢谢!
答案 0 :(得分:1)
无论何时创建新的object
(reference
类型),它都会进入堆(动态分配),因此当您使用Stack
的新实例时(数据结构,不要与内存堆混淆)它将在堆上分配。 Stack
是reference
类型,而不是值类型。