在C++中,实际上可以在没有分配内存的情况下按值抛出异常,所以这种情况是有意义的.但是在.NET framework OutOfMemoryException
是一种引用类型,因此它是在堆上分配的.
在C++中,实际上可以在没有分配内存的情况下按值抛出异常,所以这种情况是有意义的.但是在.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