2011-07-15 10 views
0

私はVS 2008 Express Editionでデバッグモードでアプリケーションを開発しています。私が作成したクラスの新しいポインタをインスタンス化すると、std :: bad_alloc例外が発生します。デバッグモードになっているので、表示されたウィンドウで「ブレーク」をクリックし、「再生」ボタンを押してプログラムを再開しようとします。std :: bad_allocしかし、最後に動作します

次に起こるのはむしろ予期せぬことです。プログラムは必要に応じて動作します。

私はMatrixオブジェクト(私のクラス)Matrix* vec = new Matrix[maxItr + 1];を使用して(私がチェックしたとエラーが発生したときmaxItrが5に等しい)の配列をインスタンス化していたときに、このエラーが発生します。このクラスには、いくつかの整数メンバとcharへのポインタがあります。このポインタはデフォルトのコンストラクタには割り当てられていません(0に設定されています)。これをエラーの原因として削除しました。 (非常に大きなメモリブロックは要求されません)。

誰もそれについての洞察を持っていますか?

+0

質問を説明するためのコードを入力する必要があります。 – iammilind

+0

例外が発生した場合、メモリが割り当てられていないとOSが判断します。その時点での動作は未定義ですが、メモリに書き込むことはできますが、保証はありません...これは意味がありますか?あなたはOSを使っていますか? OSによっては、任意のメモリに書き込めない場合がありますが、これはあなたが見ているものの1つの原因です。 – GBa

+0

ヒープマネージャがヒープの破損を検出したときにも、bad_allocがスローされます。 –

答えて

0

クラスのコンストラクタにnewがありますか?ベクトルのような別のクラスに埋め込まれたnewか?その場合は、オブジェクトのベクトルの割り当てを取得している可能性がありますが、その中に含まれるオブジェクトの1つ以上が不正です。

関連する問題