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

windows - メモリ割り当てとスワッピング(Windowsの場合)

私のかなり一般的な質問を申し訳ありませんが、私はそれに対する明確な答えを見つけることができませんでした:

空きスワップメモリ​​が残っていて、適切なチャンク(〜1MB)でメモリを割り当てている場合、何らかの理由でメモリ割り当てが失敗する可能性はありますか?

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

c++ - "std :: bad_alloc":メモリを使いすぎていませんか?

メッセージ:

私はgdbバックトレースを調べましたが、これは私が自分で実装した最低レベルのメソッドです。

上記のcoutステートメントは、7000回以上の反復後に終了することを示しています。上記の関数は、アプリケーションの終わり近くで1回だけ呼び出されます。上記を呼び出す前に非常によく似た関数を呼び出しますが、問題は発生しません。

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

c++ - WinCE アプリケーションで std::bad_alloc を取得できないのはなぜですか?

C++ 標準によると、割り当てが失敗した場合operator newthrow std::bad_alloc();

この動作をテストするために、次のコードを思い付きました。

問題は、予期せず、nullptrこれを Windows Mobile 2003 (Windows CE 4.2) で実行するたびに発生することです。

コンパイラは Microsoft (R) C/C++ Optimizing Compiler Version 14.00.60131 for ARM ですので、コンパイラが The Standard に準拠していないということはないと思います。

throw std::bad_alloc()また、指定されたブロック内で手動で試行しましたtry(成功したため、catch失敗した場合にパーツがトリガーされるはずですnew)。別のことはすることでしたset_new_handler()が、それもうまくいきませんでした。念のために言うと、私Bigのサイズは 10MB です。

では、何が欠けているのか教えていただけますか?なぜ私は取得しないのstd::bad_allocですか?

編集1:これを克服する方法を探しているのではなく、そもそもそれが起こる理由を探しています。

編集 2:デバッグへの旅で、プログラムをできる限り単純化しました。new得られた逆アセンブリ出力は次のとおりです。

システムコールはありませんか?もっと複雑にすべきではありませんか?誰でもこれを調査するのを手伝ってもらえますか?

0 投票する
7 に答える
158673 参照

c++ - C++ で bad_alloc を処理するには?

foo次のエラーを返すことがあるというメソッドがあります。

try-ブロックを使用して、catchこのエラーがプログラムを終了させないようにする方法はありますか (私がやりたいのは return だけです-1)。

もしそうなら、その構文は何ですか?

bad_allocC ++で他にどのように対処できますか?

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

c++ - new[-1] が segfault を生成するのに、new[-2] が bad_alloc をスローするのはなぜですか?

bad_allocにいくつかの負の引数を渡して、例外をテストしようとしましたnew[]。小さな負の数を渡すと、期待どおりの結果が得られます- a bad_alloc。ただし、 を渡す-1と、オブジェクトが何千回も構築され (コンストラクターで静的カウンターを出力します)、アプリケーションが segfault で終了することがわかります。

new[]は符号付き整数をにsize_t変換します。-1size_t-2maximum - 1

new[]では、巨大な数を受け取ったときに例外をスローするのに、最大数を受け取ったときに割り当てようとするのはなぜsize_tですか? 1111...11111...0forはどう違いnew[]ますか?:)

前もって感謝します!

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

xorg - IntelSandyBridge (Intel HD Graphics 3000) での「X エラー」BadAlloc GLX BadContext

GraphicsModi に必要なdebian stable3 つのパッケージを含む ThinkPad X1 (1294-3QG) を実行しています。squeeze-backports

そのカーネルの実行中に、たとえば起動すると、paraview次のエラーが発生します。

ネットのどこかに、でメモリ設定を提供するためのヒントを見つけましたがxorg.conf、それでも問題は解決しませんでした。
現在の安定したカーネル内で起動すると問題なく動作します。

実行glxgears結果は同様です:

xserver-xorg-video-intelさらに、 (およびすべての依存関係libdrm-intel1 libxfont1, xserver-common, xserver-xorg, xserver-xorg-core, xserver-xorg-input-evdev, xserver-xorg-video-fbdevと) をバックポートに更新することで問題を解決しようとしましxserver-xorg-video-vesaたが、うまくいきませんでした。

追加、エントリを見つけました

の出力でdmesg

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

memory - メモリ不足 - システムが最近使用されていないページ アウトを行わないのはなぜですか?

非常に集中的なグラフィックス作業を行うプログラムがあり、大量のメモリ (> 8GB) を必要としますが、私のマシンには現在 8GB の RAM しかありません。つまり、メモリが不足すると、プログラムは不正な割り当てをスローします。

このプログラム以外にも、メイン メモリを少し使用するプログラムをいくつか開いていましたが、ほとんどの場合、プログラムがメモリを消費しているだけでした。

bad_allocここで、メモリ使用量が 8 GB を超えると、ページ フォールトや一部のページのスワップ アウトではなく、なぜシステムがエラーをスローするのか疑問に思いました。それは、ページングと仮想メモリが解決するはずの問題の 1 つではありませんか?

最近アクセスされていないページをページアウトするだけで、必要なメモリ用に新しいページを作成できる場合、8 GB を超えるメモリを必要とするプログラムを実行できるはずです。

誰でも説明できますか?

私のマシンには 8GB のページ ファイルがあります。

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

c++ - 動的メモリ割り当てが 600MB を超えると失敗するのはなぜですか?

3 次元の char 配列を使用してブルーム フィルター (ビット テーブル) を実装しましたが、メモリを割り当てることができなくなり、 bad_allocメッセージが表示されるまではうまく機能します。600MB を割り当てた後、次の拡張リクエストでこのエラーが発生します。

ブルーム フィルター (配列) は、8 ~ 10 GB の大きさになると予想されます。

ビットテーブルを割り当てる(展開する)ために使用したコードは次のとおりです。

配列の最大許容サイズはいくらですか。これが問題でない場合は、どうすればよいですか。

編集: 32 ビット プラットフォームを使用して開発されています。

8 GB RAM を搭載した 64 ビット プラットフォーム (サーバー) で実行されます。

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

c++ - リストとの割り当てが正しくありません

私はこの仮想メソッドを持っています:

はどこchildrenにあり、std::list<std::shared_ptr<base_class>>はをmy_class継承しbase_classます。しかし、(のmy_class::to_string)最初の再帰呼び出しの後、そしてこの子を返した後str、私は悪い割り当てを取得します。

なんで?