問題タブ [bad-alloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
739 参照

c++ - C++ デキューの不正な割り当ての設定

アルゴリズム分析を行うために乱数の膨大なコレクションを作成しようとしています。その後、説明できないこの問題に遭遇しました。次のコードを検討してください。

これにより、不適切な割り当て例外が発生します。問題は、 vector と reserve() を使用すると機能することです。ベクトルのようにメモリを連続的に割り当てないため、deque はより大きな容量を持つ種類のデータ構造ではありませんか?

私はこれをWin8 x64、Visual Studio 2012、8G RAMを搭載したIntel i7で実行しています。あなたの考えを共有してくれてありがとう

0 投票する
1 に答える
1647 参照

c++ - C++でカスタムメッセージを使用してstd::bad_allocをスローする方法は?

VS2008以降、クラスbad_allocは、文字列パラメーターを持つコンストラクターを提供していません。このようにクラスを上書きせずにカスタムメッセージを作成する可能性はありますか?

0 投票する
3 に答える
2152 参照

c++ - C++ プログラムでの明らかなメモリ問題のデバッグ

私は他の誰かが作成したプログラムで作業しています。私はコーディングの経験はかなりありますが、C++ でのコーディングの経験はそれほど多くないので、ここで多くの「実行による学習」を行っています。そのため、プログラムは安定しているように見えたので、私はそれに取り組み始めました。これには、主にプログラムの小さな部分に小さな変更を加えることが含まれていました。最近、パフォーマンスの最適化を行いましたが、これも安定しているように見えましたが、2 日前に何かを変更したところ、クラッシュが発生し続けました。そのため、変更を元に戻しましたが、それでもクラッシュが発生しました。アプリケーション検証ツールとグローバル フラグを使用して、ページ ヒープをアクティブにし、ヒープ関連のすべてをチェックして、これらの問題の原因を突き止めました。そのため、デバッガーは常に「std::bad_alloc」エラーでクラッシュしていました。

ここで私の質問: Application Verifier を有効にしたこの bad_alloc クラッシュは、プログラム内のバグの兆候であると確信できますか? Application verifier を使用すると、プログラム自体が大量のメモリ (約 1 ~ 1.1 GB) を使用しますが、それ以上使用することはありません。合計システム メモリは多くても 80 ~ 90% 使用されているため、空き容量が少なすぎるために実際に割り当ての問題が発生することはないと思います。どう思いますか?

0 投票する
1 に答える
304 参照

c++ - std::bad_alloc と GSL ODE ソルバー

GSL ソルバーを使用して ODE の (大規模な) システムを解こうとしています。ドライバーメソッドを使用すると、エラーメッセージが表示さcould not allocate space for gsl_interp_accelれます。コントロール、エラー、ステッパーを手動で定義すると、bad_alloc例外が発生します。これは、私が理解している限りcould not allocate space for gsl_interp_accel、他のケースで発生するのと同じことが原因で発生します-欠落メモリの。

this onebad_allocなどの他のクエリに相談しましたが、私の特定のケースに役立つものは何も見つかりませんでした。また、他の ODE ソルバーも試しましたが、メモリ エラーが発生します。また、プログラムを valgrind でチェックして、ソルバー以外の場所にメモリ エラーやリークがないことを確認しました。

どのソルバーにも「統合の制限」があり、私の場合、プログラムは上限の約 10% で正常に動作します (これは下限に比べて大きいです。これがエラーの原因であると確信していますが、必要です)。これらの特定の制限の間を統合するため)、上で引用した例外の 1 つで終了します。さまざまな (固定/適応) ステップ サイズを試しましたが、希望の 10% を超えることはありませんでした。

例外を与えるコードは次のとおりです。

したがって、コードを変更final_timeするとfinal_time/10実行されますが、結果は意味がありません。ソルバー後に何もしなくても例外はスローされcould not allocate space for gsl_interp_accelますが。

間にメモリを消去してループをいくつかの(多くの)ループに分割しようとしましたが、これはあまり役に立ちませんでした。

これが重要な場合は、GNU コンパイラーと Intel C++ Composer でコンパイルされた Ubuntu 12.10 を使用します。また、Mac (OS のバージョンがわからない) でもテストされ、同じ結果が得られました。

問題は、ソルバーを「チート」してプログラムを適切に動作させる方法はないかということです。

PS: 中間結果を取得するよりスマートな方法を持つ ODEint ソルバーも例外をスローします。

0 投票する
1 に答える
10849 参照

c++ - C++ 例外: メモリ位置での bad_alloc

binary.exe の 0x7650C41F で未処理の例外: Microsoft C++ 例外: メモリ位置 0x003EEE00 で std::bad_alloc。

私が初心者の間違いを犯しているかどうかはわかりませんが、以下のコードを実行しようとするたびに、上記のエラーが表示されます.さまざまなフォーラムの投稿とエラーメッセージから収集できるものから、問題があります.メモリの割り当てですが、それは私が持っている限りです。

以下にリストされているコードは、ソース ファイルが非常に長く、実際に投稿する必要がないため、私のプロジェクトの短縮バージョンです。

getDocumentRootA()また、関数が 1 回だけ呼び出されるようにコードの最初の部分 (以下の例を参照) を変更しようとしたことも注目に値しますが、それでも問題は解決しませんでした。

0 投票する
3 に答える
1595 参照

c++ - STD 不良割り当て例外

このプログラムは厳密にアルファベットのみを読み取り、そのようにベクトルにプッシュ バックします。ただし、テキスト ファイルは他のテキスト ファイルと同じです。

この STD の不正な割り当て例外が発生しました。次のとおりです。

ご教授ください。

編集keyArray の部分を取り除くと、正常に動作します。なぜそうなのですか?ここで間違って何をしていますか?

0 投票する
1 に答える
1997 参照

node.js - node.js 作成 bad_alloc

主に学習目的で node.js の使用を開始しようとしていますが、将来のプロジェクトで使用する可能性があることは間違いありません。

私の問題 - Centos サーバーで SSH を使用しており、このチュートリアルを完了しました: https://www.digitalocean.com/community/articles/how-to-install-and-run-a-node-js-app -centos-6-4-64bit

「高速アプリの作成」セクションまではすべてうまくいきました。コマンド ラインで「express hello」と入力すると、次のエラーが表示されます。

次に、ディレクトリにファイル (例: core.1233) があり、そこに専門用語が含まれているように見えますが、以前は存在しなかったことは間違いありません。

また、http://nodejs.org Web サイトにアクセスし、そこにあるコードを使用して単純な Web サーバーを作成しようとしました。example.js ファイルを作成し、「node example.js」と入力すると、次のようにも表示されます。

...以前と同じように。

私はプログラマー (通常は PHP、MySQL など) ですが、サーバーやコマンド ラインではあまり機能しませんが、十分に「回避」できます。問題は - これが何を意味するのか、簡単なグーグル検索が私に教えてくれること以外には手がかりがありません - メモリと関係がありますか? どんな助けでも大歓迎です!

(また、「node --version」と入力すると、バージョン v0.10.8 が取得されるので、ノードが正しくインストールされていることは確かです。example.js ファイルを作成して、「console.log('test')」とだけ言う場合;"、それでも終了し、同じエラーが発生します。出力されません。)

ありがとう!

0 投票する
0 に答える
778 参照

c++ - Opencv/C++ (Windows) で imwrite を使用して ppm ファイルを書き込むと、bad_alloc 例外が発生します。

Mat を ppm 画像として保存しようとしています。ppm を読み取って Mat にロードできます。エラーの原因となっているコードの部分は次のとおりです。

正常にビルドされますが、ファイルの書き込みに関しては、次のエラーが発生します。

「HW.exe の 0x76b2c41f で未処理の例外: Microsoft C++ 例外: メモリ位置 0x0018f280 の std::bad_alloc ..」

これを修正する方法はありますか?

編集:次のようにして機能させました:

0 投票する
4 に答える
5042 参照

c++ - std::map 不正な割り当てエラー

std::map の問題に直面しています。理由は不明ですが、map への挿入によって「不適切な割り当て」例外が発生することがあります。

以下は、マップに挿入するために使用する関数です。

誰かがこれを解決する方法を教えてもらえますか?

注: 再現する手順を特定できません。

THXお早めに!

オブジェクトとマップに関する詳細を追加:

0 投票する
4 に答える
6085 参照

c++ - new を使用しない場合の C++ メモリ割り当てエラー

プログラムが多数のメモリ割り当て例外をスローするという問題があり、問題を診断するのに非常に苦労しています...コードを投稿しますが、プログラムが非常に大きく、独自の情報に関する懸念があるため、コードを投稿せずに助けを得たいと思っています。なんらかの形式の SSCCE コメントで返信する予定がある場合は、今すぐ読むのをやめて、私たち二人の時間を節約してください。これは、簡潔なコードを投稿できない場合です。問題の説明といくつかの特定の質問について、できるだけ明確かつ簡潔にしようとします。

プログラムの背景- 私のプログラムは基本的にデータ処理ツールです。一連のデータ テーブルを入力として受け取り、それらに対して計算を実行し、計算結果に基づいて新しいデータ テーブルを吐き出します。私のデータ構造はすべてユーザー定義のクラスです (配列のベクトル コンテナーを持つ int、double、および string 型で構成されています)。いずれの場合も、new と delete を使用せずにクラス変数のインスタンスを開始します。

問題の説明- 私のプログラムは警告なしでコンパイルされ、小さなデータセットで問題なく動作します。ただし、データセットを増やすと (20x80 配列から 400x80 に)、bad_alloc 例外をスローし始めます (最初の 35 エントリ程度を処理すると)。大規模なデータセットは、18 個のモジュールのうち 17 個で正常に実行されます。エラーが発生している 1 つの関数を分離しました。この関数に必要な計算では、約 30,000 行のデータが作成されますが、コード内の他の関数では 800,000 行以上が問題なく生成されます。
このモジュールの唯一の固有の属性は、サイズ変更を頻繁に使用していること (関数呼び出しごとに約 100 回) と、関数がサイズ変更操作中に再帰ループを使用していることです (関数は、建物の 1 つのテナントから平方フィートを割り当てています)。すべての平方フィートが割り当てられるまで、各テナント リースのサイズと期間がシミュレートされた後、割り当てられる残りのフィートを更新します)。また、エラーは毎回ほぼ同じ場所で発生しています (ただし、結果に何らかの変動をもたらす乱数ジェネレーターがあるため、まったく同じ場所ではありません)。私を本当に困惑させているのは、この関数への最初の ~34 回の呼び出しが正常に機能し、~35 回の呼び出しでは前の 34 回よりも多くのメモリを必要としないにもかかわらず、35 回目の呼び出しでこれらの bad_alloc 例外が発生しているということです...

コードなしで支援するのは難しいことを私は知っています。私に何か方向性を教えてください。私の具体的な質問は次のとおりです。

  1. 「new」と「delete」を使用しておらず、すべての変数がローカル関数の内部で初期化されている場合、関数呼び出しを繰り返すことでメモリ リークや割り当ての問題が発生する可能性はありますか? 「ベクターインスタンス」を使用してローカル関数の変数インクルードを初期化するときに、メモリを管理するためにできること、またはすべきことはありますか? 私の変数を宣言するには?

  2. スタックを介してプログラム全体を実行している場合、スタックメモリが不足している可能性はありますか? 大きなルックアップ テーブル (マップなど) の一部をヒープにロードし、速度が重要な反復にスタックを使用する必要がある可能性はありますか?

  3. サイズ変更を頻繁に使用すると、メモリに関連する問題はありますか? これは、"new" と "delete" を使用する必要がある場合でしょうか (多くの場合、非常に強い特定の理由がない限り、これらを使用しないように警告されています)。

  4. [関連 3] 問題関数内で、クラス変数を作成し、その変数を約 20 回 (モデルの「反復」ごとに 1 回) 上書きしています。これを行うとき、前の反復からのデータは必要ありません...したがって、表向きは反復ごとに変数の新しいインスタンスを作成できますが、これがどのように役立つかはわかりません(明らかに私ができるので最初の ~34 個のデータ スライスの 1 つのインスタンスで 20 回の反復すべてを実行するため)

任意の考えをいただければ幸いです。いくつかのコードを投稿しようとすることはできますが、私はすでに一度それを試しましたが、コンパイルできないという事実に誰もが気を取られているようでした. 問題の関数を投稿できますが、それ自体はコンパイルされません。

問題を引き起こしているクラスは次のとおりです。

また、ここに再帰が発生する関数のスニペットがあります