示例代碼:爲什麼叫StackOverflowException?爲什麼不HeapOverSizedException?
Static void main(string[] args) { Class1 c1 = new Class1(); }
Class1 { Class1() { Class2 c2 = new Class2(); } }
Class2 { Class2() { Class1 c1 = new Class1(); } }
上面代碼拋出StackOverFlowException
。這裏我們遞歸創建Class1
& Class2
對象。對象存儲在Heap中,那麼爲什麼它不投擲HeapOversizedException
或someotherException
與堆相關?
因爲你沒有用完堆(內存),所以你正在用遞歸方式來堆棧。 –
此外,*有*「堆超大異常」。它被稱爲['OutOfMemoryException'](http://msdn.microsoft.com/en-us/library/system.outofmemoryexception.aspx)。 – Jon
這將被定義爲'OutOfMemoryException'這是引用線程執行堆棧的堆棧 –