3
  • C#で新しい演算子を使用すると失敗する可能性がありますか(たとえば、大きなメモリが必要な場合)?-解決済み-
  • そしてそれを発見する方法は?-解決済み-
  • 新しいオペレーターがスローする可能性のある他の障害は何ですか?

ありがとう

4

4 に答える 4

9

new失敗すると、OutOfMemoryExceptionがスローされます。さらに、コンストラクター自体は、実装に応じて例外をスローする場合があります。

OutOfMemoryExceptionのMSDNドキュメントから:

次のMicrosoft中間(MSIL)命令は、OutOfMemoryExceptionをスローします。

  • newarr

  • newobj

于 2010-04-22T21:07:28.717 に答える
4

newコンストラクターを呼び出すオペレーターは、想像できるあらゆる例外をスローできます。たとえば、コンストラクターで何か大きなものを割り当てようとして失敗した場合、その例外がキャッチされ、よりエキゾチックなものとして再発生する可能性があります。

もちろん、メモリ不足が発生し始めた時点で、おそらくプロセスが末期症状であると見なし、その悲惨な状況からできるだけ早く取り除く必要があります。

nullコンストラクターは、それとは反対のすべての噂にもかかわらず、クラスに対しても戻ることができます-しかし、それは病理学的に隣接する極端なエッジケースです。

于 2010-04-22T21:16:34.187 に答える
1

C#で新しい演算子を使用すると失敗する可能性がありますか(大容量のメモリが必要な場合)?

はい。(不足する可能性のあるリソースはアドレス空間であり、メモリ自体ではありません。)

そしてそれを発見する方法は?

質問がわかりません。

于 2010-04-22T21:07:11.683 に答える
1

はい、スローしますOutOfMemoryException

于 2010-04-22T21:08:07.860 に答える