堆栈大小和值类型

时间:2012-02-21 06:50:53

标签: c# .net

假设我们有一个值类型的局部变量(例如struct)。它将存在于堆栈中。但结构的大小可能不同(8字节,800字节或8兆字节)。

当值类型的大小大于堆栈大小时会发生什么?

2 个答案:

答案 0 :(得分:2)

执行堆栈溢出时抛出StackOverflowException。 Microsoft建议永远不要创建大于16字节的值类型。

答案 1 :(得分:2)

  

假设我们有一个值类型的局部变量。存储将在临时池上分配,这通常通过分配堆栈来实现。当存储所有局部变量所需的存储大小大于可用堆栈空间时会发生什么?

你得到一个“out of stack”异常。我很好奇:当你用完堆栈时,你想象的其他行为会发生什么?