• 締切済み

メモリ開放

C#でのメモリの開放の仕方を教えてください。 二次元配列で1万、1万でやっているのですが、エラーが出てメモリが足りないと言われます。 開放をしたいのですが、ネットで探しても難しく書いてあって分かりません。おしえてください。

みんなの回答

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

他の回答者さんのおっしゃるとおり、まずは設計ミスだと思います。 それと、C#の質問なのに、C/C++カテゴリに投稿されていますので、 マナー違反です。 なお、C#において、.NETの範囲でメモリを扱っているのなら、 開放はありません。勝手にガベージコレクトされます。 .NETの範囲を超えてメモリ確保するつもりなら、 マーシャル系のメソッド処理が必要ですね。 http://msdn2.microsoft.com/ja-jp/library/system.runtime.interopservices.marshal(VS.80).aspx

すると、全ての回答が全文表示されます。
回答No.2

私も、開放する以前に、メモリ不足だと思います。 二次元配列で、10000 x 10000 だと要素が1バイトでも単純計算で約100Mバイト弱、整数など4バイトなら400Mバイト弱もメモリを必要としてしまいます。仮にオブジェクトの配列となるとさらにそれ以上に大量のメモリが必要となりますよ! 何の配列なのかわかりませんが、もう少し小さいサイズの配列で済むよう方式の再検討をするべきかと思われます。

すると、全ての回答が全文表示されます。
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

何の二次元配列か、それがどれだけ作られるのかなど分かりませんが、 数が大きすぎるのでは?メモリ解放とかいう話ではなさそうなサイズです。 全部一括の配列にせず、必要なサイズだけ読み出すなど、 アルゴリズムレベルから見直した方がいいかもしれません。

すると、全ての回答が全文表示されます。

関連するQ&A