問題タブ [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 投票する
2 に答える
1821 参照

c++ - ベクトルを返す理由std::bad_alloc 例外をスローしますか?

以下のプログラムは、123210122 のようなほとんどの入力に対して完全に実行されます。

しかし、122211122222111222111111112221111 として入力すると、std::bad_alloc 例外がスローされます。

質問で指定されているように、クラス構造または関数シグネチャを変更できません。だから、このコードを見てください:

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

c++ - この bad_alloc 例外がスローされるのはなぜですか?

私はC ++にまったく慣れていないので、Javaの配列として(主に便利な長さフィールド用に)本質的に機能する単純な汎用(これが適切な用語かどうかはわかりません)配列クラスを試してみたいと思いました。すべてのコードは次のとおりです。

(MinGWを使用して)問題なくコンパイルされますが、実行すると次の出力が得られます。

最後に出力されるのは nums2:2 の長さなので、cout行で例外がスローされると想定します。Array<int> nums3=Array<int>(2);

これの理由は何ですか?記憶がなくなるわけがないじゃないですか。

0 投票する
2 に答える
998 参照

c++ - 新しいベクターを割り当てるときの std::bad_alloc - どうすればよいですか

私は問題があります。要件を満たすためにいくつかのポイントで変更する巨大な c++ プロジェクトがあります。予想よりも多くのデータをロードしましたが、このプログラムのある時点で、データ数に別の数を掛けたサイズの新しいベクトルが割り当てられています。

ここでエラーメッセージが表示されます:

それほど多くのスペースを割り当てることができないためです。このベクトルはプログラムのさまざまな部分で使用されているため、変更できません。プログラムの残りの部分をここで新しい定義に適合させることは非常に困難であり、(私にとっては)おそらく不可能です。

このベクターを使用して大きなデータセットを取得するにはどうすればよいですか?

ところで:私は日食を使用していますが、日食自体に割り当てることができるスペースのサイズを増やすことができますか?

ありがとうございました!

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

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 回目です。

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

raii - RAII で bad_alloc を処理するには?

コードは次のとおりです。

new が bad_alloc 例外をスローした場合、スマート ポイント aPtr はどうなりますか? aPtr でチェックを行う必要がありますか? また、その方法は? また、Google C++ プログラムのルールの 1 つが例外を使用していないことは知っていますが、bad_alloc のような例外をどのように処理するのでしょうか? 返信ありがとうございます。

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

c++ - 悪い alloc() 実行時エラーを解決するには?

私が書いたコードで std::bad alloc() 例外が発生しています。SOに関する他の回答によると、動的に割り当てられたメモリを解放する必要がありますが、例外は残ります。どうすれば解決できるかについての手がかりはありますか?

エラーが出る機能をつけています。

int count(int *S, int m, int n ) { int i, j, x, y;

私は基本的にコイン交換の問題を解決しようとしています。n は 10^9 まで大きくすることができます。