0

計算用のメモリを大量に使用するプログラムを入手しました。多すぎないと思います。もちろん、すべての bif 配列はヒープに格納されます。MS VS 10 は私の IDE です。Windows のタスク マネージャーは、1548 Kb かかると言っています。私はまだそれを書いています、そしてある時点で私は追加しました

bool* mask= new bool [numberOfUnknowns];

numberOfUnknowns1600です。クラスの1つのパブリックメソッドにあります(重要かどうかはわかりません)。そして、私は得る

ProgrammName.exe の 0x777615de で未処理の例外: 0xC0000005: アクセス違反の書き込み場所 0x006a2000。

この行で。そしてそれはハードコードされたもので動作します

new bool [10];

そして失敗します

new bool [1600];

それで、可能なメモリサイズに達していますか? それとも何か他のことを確認する必要がありますか?私はそれ以上のメモリを取得できないとは思わない

double* a = new double [100000];

主にチェックのためだけにメモリサイズを大きくしますが、実行時エラーは同じ位置にあります。
前もって感謝します。

追加 1:

この行を含むメソッドの呼び出しを他のすべての呼び出しの前に配置すると、機能しました。だから、私のクラスの他のメソッドの作業中にメモリが割り当てられたり解放されたりするため、メモリの問題だと思います。それで、どのようにそれが可能ですか?さらにコードを投稿する必要がありますか、またはそのような場合の一般的な解決策/説明がありますか?

追加 2:そして、std::vector何が問題なのかを調べる必要があるため、理解せずにこの問題を放置したくありません。投稿のスタイル修正をありがとう!

4

1 に答える 1

1

を使用しstd::vectorます。あなたのエラーは、基本的に、所有しなくなったメモリにアクセスすることです-すでに解放したか、最後を過ぎたなどの理由で。この問題を防ぐには、クラスベースのソリューションを使用する必要があります。

于 2012-06-16T14:57:37.460 に答える