0

私のプログラムには、600000個の要素の大きな配列が含まれています(各要素は構造体です)。私がプログラムをデバッグしていたとき、それはでOutOfMemoryExceptionを与えられました

FlightLeg *legRecord= new  FlightLeg[600000];(FlightLeg is a structure)

このプログラムは、いくつかのデータ処理と初期データのロード(2日以上!)を実行する必要があるため、多くの時間を消費します。

ですから、デバッグ中に変更を加えたいと思います。600000を少し小さい値に変更すると役立つと思います。私が間違っている場合は、私に提案をお願いします。

デバッグ中に600000を変更する方法はありますか?2日かかった以前のデータ読み込みを失いたくないからです。

4

1 に答える 1

0

それはいくつかのことに依存します:

  • sizeof構造FlightLeg. _ たとえば、 1 つFlightLegが 100 バイトを必要とする場合、60,000,000 バイトのメモリが必要になります。これは、特に連続したメモリを割り当てる場合には膨大です。
  • この巨大なサイズを複数回割り当てると、プロセスで使用できるメモリが制限されます。より多くの(はるかに)メモリを利用できるように、同じの64ビットバージョンをコンパイルおよびビルドする必要がある場合があります。
  • このサイズの割り当て、およびこのタイプはお勧めしません。同じために、いくつかのコレクションクラス(vector、 などlist)を使用する必要があります。配列のサイズが一定であっても、コンパイル時の割り当て (つまり、スタックの割り当て) はお勧めしません。
于 2012-12-05T08:02:50.720 に答える