【发布时间】:2014-02-26 10:36:11
【问题描述】:
我需要将递归函数转换为堆栈形式,因为我的程序以堆栈溢出结束。我正在使用 Unity3D C#,在某处我看到该程序的大小约为 5MB。
我的问题是,对项目的引用堆栈会保留在堆中还是仍然保留在堆栈中?我想很明显它会在堆上,但我不清楚为什么。
谢谢!
【问题讨论】:
我需要将递归函数转换为堆栈形式,因为我的程序以堆栈溢出结束。我正在使用 Unity3D C#,在某处我看到该程序的大小约为 5MB。
我的问题是,对项目的引用堆栈会保留在堆中还是仍然保留在堆栈中?我想很明显它会在堆上,但我不清楚为什么。
谢谢!
【问题讨论】:
每当您创建一个新的object(reference 类型)时,它都会进入堆(动态分配),因此当您使用Stack 的新实例时(数据结构,不要与内存混淆stack) 它将被分配在堆上。 Stack 是 reference 类型,而不是值类型。
【讨论】: