問題タブ [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::bad_alloc 例外をスローしますか?
以下のプログラムは、123210122 のようなほとんどの入力に対して完全に実行されます。
しかし、122211122222111222111111112221111 として入力すると、std::bad_alloc 例外がスローされます。
質問で指定されているように、クラス構造または関数シグネチャを変更できません。だから、このコードを見てください:
c++ - この bad_alloc 例外がスローされるのはなぜですか?
私はC ++にまったく慣れていないので、Javaの配列として(主に便利な長さフィールド用に)本質的に機能する単純な汎用(これが適切な用語かどうかはわかりません)配列クラスを試してみたいと思いました。すべてのコードは次のとおりです。
(MinGWを使用して)問題なくコンパイルされますが、実行すると次の出力が得られます。
最後に出力されるのは nums2:2 の長さなので、cout
次の行で例外がスローされると想定します。Array<int> nums3=Array<int>(2);
これの理由は何ですか?記憶がなくなるわけがないじゃないですか。
c++ - 新しいベクターを割り当てるときの std::bad_alloc - どうすればよいですか
私は問題があります。要件を満たすためにいくつかのポイントで変更する巨大な c++ プロジェクトがあります。予想よりも多くのデータをロードしましたが、このプログラムのある時点で、データ数に別の数を掛けたサイズの新しいベクトルが割り当てられています。
ここでエラーメッセージが表示されます:
それほど多くのスペースを割り当てることができないためです。このベクトルはプログラムのさまざまな部分で使用されているため、変更できません。プログラムの残りの部分をここで新しい定義に適合させることは非常に困難であり、(私にとっては)おそらく不可能です。
このベクターを使用して大きなデータセットを取得するにはどうすればよいですか?
ところで:私は日食を使用していますが、日食自体に割り当てることができるスペースのサイズを増やすことができますか?
ありがとうございました!
c++ - 既に作成されたベクトルの奇妙な std::bad_alloc
エラーで実行していstd::bad_alloc
ます。私が知る限り、また StackOverflow に関する調査を見た限りでは、これは、アクションを実行するために必要なメモリが不足している、または何らかの破損したデータ構造があるために発生する可能性があります (ここで説明されているように)。
私の場合、属性を含むクラスAstd::vector<std::vector<unsigned int> > tiles
があります。このコンテナーが でこの方法で作成された場合、エラーは発生しませんA.h
。
GetTiles
さらに、返すことを担当する関数のプロトタイプを作成しましたtiles
。これはA.cpp
、次のコードで行われます。
正確な瞬間に、別のクラスBが次のように使用してタイル コンテナを取得しようとしていますGetTiles
( B.cpp
):
その正確な瞬間、 への呼び出しの後GetTiles()
、次のエラーが表示されます。
aux
そのため、コンテナにメモリを割り当てようとするとエラーが発生します。関数にprintf()
呼び出しを配置して、少し printf デバッグを試みました。GetTiles()
次に、クラッシュする前に、プログラムはコンソール ラインに奇妙な結果を表示します: -1524170727
. このすべてのコードの前に、tiles
コンテナーに影響を与える可能性のあるものは何もありません。宣言されている他のベクトルはA.h
正常に動作し、誰もが (私が理解している限り) 期待どおりに作成された後、サイズは 0 になります。また、クラス A のコンストラクターに呼び出しを配置しtiles.clear()
ようとしましたが、何もしません。
編集:関数 内の他のコンテナーを返すことも試みましたが、GetTiles()
機能します。さらに、戻り値をコンテナーに割り当てずに関数を呼び出してみました。
また、それも機能するため、問題は返されたコピーではなく、aux
コンテナーへの割り当てにあるはずです。エラーは奇妙なサイズのtiles
.
私はこれまで見たことがなく、Google でも何も見つかりませんでした。私はあなたが私に与えることができるどんな助けにも感謝します. どうもありがとう。SO に何かを投稿するのは 2 回目です。
raii - RAII で bad_alloc を処理するには?
コードは次のとおりです。
new が bad_alloc 例外をスローした場合、スマート ポイント aPtr はどうなりますか? aPtr でチェックを行う必要がありますか? また、その方法は? また、Google C++ プログラムのルールの 1 つが例外を使用していないことは知っていますが、bad_alloc のような例外をどのように処理するのでしょうか? 返信ありがとうございます。
c++ - 悪い alloc() 実行時エラーを解決するには?
私が書いたコードで std::bad alloc() 例外が発生しています。SOに関する他の回答によると、動的に割り当てられたメモリを解放する必要がありますが、例外は残ります。どうすれば解決できるかについての手がかりはありますか?
エラーが出る機能をつけています。
int count(int *S, int m, int n ) { int i, j, x, y;
私は基本的にコイン交換の問題を解決しようとしています。n は 10^9 まで大きくすることができます。