在 C++ 中,实际上可以按值抛出异常而无需在堆上分配内存,因此这种情况是有道理的。但在 .NET 框架中 OutOfMemoryException
是一个引用类型,因此它被分配在堆上。
当没有足够的内存来创建新对象时,.NET framework 如何为 OutOfMemoryException
分配内存?
最佳答案
它由运行时预分配。如果您探索任何托管进程的堆,您会发现该异常的一个实例。
以下是 Hello World 应用程序的预分配异常:
0:003> !dumpheap -stat -type Exception
Statistics:
MT Count TotalSize Class Name
735f2920 1 84 System.ExecutionEngineException
735f28dc 1 84 System.StackOverflowException
735f2898 1 84 System.OutOfMemoryException
735f2744 1 84 System.Exception
735f2964 2 168 System.Threading.ThreadAbortException
关于c# - .NET framework 如何为 OutOfMemoryException 分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439897/