- 在 c# 中使用 operator new 是否可能会失败(例如,如果它需要大内存)?-解决了-
- 以及如何发现它?-解决了-
- 新操作员可能会抛出哪些其他故障?
谢谢
谢谢
如果new
失败,它将抛出OutOfMemoryException。此外,构造函数本身可能会根据实现抛出任何异常。
来自 OutOfMemoryException 的 MSDN 文档:
以下 Microsoft 中间 (MSIL) 指令抛出 OutOfMemoryException :
盒子
纽华尔
新对象
调用构造函数的new
运算符可以抛出您可以想象的任何异常。例如,如果在构造函数内部尝试分配一些大的东西但失败了,那么该异常可能会被捕获并重新引发为更奇特的东西。
当然,当您开始看到内存不足时,您可能应该认为该进程已病入膏肓,并尽快将其从痛苦中解脱出来。
尽管有所有相反的谣言,构造函数也可以返回null
甚至为类 - 但这是一个极端的极端情况,接近于病态。
在 c# 中使用 operator new 是否可能会失败(如果它需要大内存)?
是的。(您可能用完的资源是地址空间,而不是内存本身。)
以及如何发现它?
我不明白这个问题。
是的,它抛出OutOfMemoryException