問題タブ [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.
c++ - std::vector での C++ std::bad_alloc エラー
この質問が以前に尋ねられたことは理解していますが、回答は質問者のコードに対してあまりにも具体的であるように思われました。
これが役に立たない重複した質問と見なされる場合は、遠慮なく削除するか、重複としてマークしてください。
私が知る限り、私のコードは、テキスト ファイル内の指定された単語の出現回数を数えている、私が達成しようとしているものに対して正しいです。助けていただければ幸いです、ありがとう。
エラー
私のmain.cppの一部(問題の原因)
c++ - 大きな配列のマージソートを実装する際の bad_alloc 例外
C++ を使用してマージ ソート アルゴリズムを実装しています。大きな配列のソート中に、例外 (bad_alloc) が発生します。私はC++が初めてなので、このエラーを取り除く方法がわかりません。私が喜んで答えるのは、例外を処理することではなく、理由です。
最初にmerge_sort関数を呼び出す私の主な方法は次のとおりです。
1000000 要素まではこれで問題なく動作します。サイズ 10000000 の配列をソートするときに問題が発生しています。
テスト用の完全なコードを次に示します。
誰かが修正ではなく、この背後にある理由を教えてくれる方が良い. ありがとう!
c++ - std::bad_alloc を取得した場合はどうすればよいですか?
2d
生物クラス ポインターの配列を作成します。
私が持っている場合はbad_alloc
、より小さな int 値で init を呼び出したいと思います。アレイをdelete
失敗させる必要がありますか、それとも単に実行できますか? はいの場合、それを削除するにはどうすればよいですか。アレイアプリケーション全体をループすることはできません。クラッシュするだけです。
c++ - std::bad_alloc: Eigen でのバッファ サイズの決定
Eigen の行列形式を使用して、以前に取得した多次元データを読み取ります。
後で私のデータサイズを知った後:
PackSize
の順序である可能性があり6e08
ます。バッファサイズを計算するときの整数オーバーフローを避けるために、以前は win32unsigend long long
でアドレス指定できました。(PackSize* 12*8) mod (2^32)
それでも、私は次のことを思いつきますUnhandled exception at 0x75362F71 in DataRead.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x004CBCF0
。誰かがこの問題を処理するのを手伝ってくれませんか?
c++ - operator= メソッドが呼び出されると std::bad_alloc 例外がスローされます C++
多項式である C++ で最初のクラスを作成していますが、実行時に bad_alloc 例外がスローされました。
bad_alloc がスローされる (そしてプロセスが -1073741819 ステータスで終了することもある) という事実は、メモリがいっぱいであるという事実とはほとんど関係がないと思いますが、それよりも、クラスの構築方法に根本的に問題があるという事実とは関係がないと思います (そして動的メモリを扱うのも初めてです)。どんな助けでも大歓迎です。
c++ - vector が bad_alloc をスローしています
std::bad_alloc
例外をスローしている次のコードがあります。
このコードnlines
は、約 500,000 (ncolumns
通常は 10 未満) のときに機能するようですが、フル サイズのデータ セットでこれを試したところ、nlines
= 2,600,000 で bad_alloc 例外が発生しました。
私は 12 GB のメモリを持っており、プログラムの実行時にメモリ使用量を見ると、28% (開始前) から最大 42% (例外がスローされたとき) になります。そのため、まだメモリが使用可能であるように見えます。
ベクトルがメモリをヒープに割り当てるというこの投稿を見つけました。この MSDN ページにリンクしているこの投稿によると、コードで使用できるヒープの量 (バイト単位) を設定できます。最初、ヒープ コミット サイズとヒープ予約サイズは空白でした。2000000000 (2 GB) の値を入力しても、同じ問題が発生します。
興味深いことに、この C++ コード (CLI ではない) は、C#.NET アプリケーションからの相互運用機能を使用して呼び出されています。Heap Commit Size と Heap Reserve Size への変更は、C++ プロジェクトで設定されました。これらを .NET プロジェクトにも設定する必要があるかどうか、またはこれを行う方法がわかりません。
アドバイスや助けをいただければ幸いです。
c++ - std::string を返す関数での例外処理
std::bad_alloc
この関数で例外を処理する方法:
どの stl コンストラクターbad_alloc
でも をスローできるため、次のようにする必要があります。
繰り返しcatch
ますが、ブロックはまだ安全ではありません。
この関数の例外を証明したいだけです。
c++ - std::unordered_map に挿入するときの std::bad_alloc?
次のコードで std::bad_alloc が発生することがあります。
その行を含むメソッドを使用するテスト ケースの実行中に発生する場合と発生しない場合があります。コードを usem_foo[id] = bei
に変更したため、1回のコンパイルで発生しなくなりましたが、再コンパイルすると失敗したため、上記に変更しましたが、失敗し続けました。明らかに、問題はそれよりも深刻です。
top
テストケースの実行中に実行していて、メモリがいっぱいになることはほとんどないので、メモリ不足の問題ではないと確信しています。
std::bad_alloc の原因は何ですか? これを引き起こしている可能性chash
のある詳細は何ですか?block_extended_info
これらのタイプのオブジェクトはコピーされ、コードの他の部分のいたるところに渡されますが、問題は発生しません。
の定義は次のchash
とおりです。
以下は、定義に必要なすべてのものですblock_extended_info
。
gdb の関連する領域を歩き回ると、bad_alloc につながる最新の数行を次に示します。
c++ - この些細な例で new を安全に呼び出す最善の方法は?
学校のプロジェクトでは、卵、巣、鶏の 3 つのクラスがあります。を使用new
して each のインスタンスを作成し、each をmain
呼び出しdisplay()
てから、明示的にそれぞれを削除する必要があります。それはすべて簡単です。
bad_alloc
私の問題は、 ;を適切にキャッチする方法がわからないことです。new
いずれかの呼び出しで 1 をスローする必要があります。
現在、次のようになっています。
new
ブロックの最初から最後までdelete
ブロック全体をラップし、try
, をキャッチして各インスタンスbad_alloc
を呼び出すdelete
ことを考えましたが、次のシナリオを考えました。
egg
正常に作成されましたnest
失敗し、bad_alloc
この時点で 3 つすべてに対して delete を呼び出すとhen
、そもそも割り当てられていないため、別の例外がスローされるはずです。したがって、解放することはできません。
理想的には、new
このようにオープンに使用しないことはわかっていますが、この状況を処理する最善の方法は何ですか? 適切に処理するにはあまりにも些細で人工的すぎますか?