gpt4 book ai didi

c# - 为什么调用 StackOverflowException?为什么不是 HeapOverSizedException?

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:44 25 4
gpt4 key购买 nike

示例代码:

Static void main(string[] args) { Class1 c1 = new Class1(); }

Class1 { Class1() { Class2 c2 = new Class2(); } }

Class2 { Class2() { Class1 c1 = new Class1(); } }

以上代码抛出 StackOverFlowException。在这里,我们递归地创建了 Class1Class2 对象。对象存储在Heap中,为什么不抛出与Heap相关的HeapOversizedExceptionsomeotherException

最佳答案

无限递归总是导致 StackOverflowException。这不是因为对象分配,而是因为对方法的调用必须记住调用者在堆栈上的地址,并且这样做会无限地溢出堆栈。

Wikipedia对该过程有相当正式的描述。

关于c# - 为什么调用 StackOverflowException?为什么不是 HeapOverSizedException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com