問題タブ [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.
windows - メモリ割り当てとスワッピング(Windowsの場合)
私のかなり一般的な質問を申し訳ありませんが、私はそれに対する明確な答えを見つけることができませんでした:
空きスワップメモリが残っていて、適切なチャンク(〜1MB)でメモリを割り当てている場合、何らかの理由でメモリ割り当てが失敗する可能性はありますか?
c++ - "std :: bad_alloc":メモリを使いすぎていませんか?
メッセージ:
私はgdbバックトレースを調べましたが、これは私が自分で実装した最低レベルのメソッドです。
上記のcoutステートメントは、7000回以上の反復後に終了することを示しています。上記の関数は、アプリケーションの終わり近くで1回だけ呼び出されます。上記を呼び出す前に非常によく似た関数を呼び出しますが、問題は発生しません。
c++ - WinCE アプリケーションで std::bad_alloc を取得できないのはなぜですか?
C++ 標準によると、割り当てが失敗した場合operator new
。throw 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
得られた逆アセンブリ出力は次のとおりです。
システムコールはありませんか?もっと複雑にすべきではありませんか?誰でもこれを調査するのを手伝ってもらえますか?
c++ - C++ で bad_alloc を処理するには?
foo
次のエラーを返すことがあるというメソッドがあります。
try
-ブロックを使用して、catch
このエラーがプログラムを終了させないようにする方法はありますか (私がやりたいのは return だけです-1
)。
もしそうなら、その構文は何ですか?
bad_alloc
C ++で他にどのように対処できますか?
c++ - new[-1] が segfault を生成するのに、new[-2] が bad_alloc をスローするのはなぜですか?
bad_alloc
にいくつかの負の引数を渡して、例外をテストしようとしましたnew[]
。小さな負の数を渡すと、期待どおりの結果が得られます- a bad_alloc
。ただし、 を渡す-1
と、オブジェクトが何千回も構築され (コンストラクターで静的カウンターを出力します)、アプリケーションが segfault で終了することがわかります。
new[]
は符号付き整数をにsize_t
変換します。-1
size_t
-2
maximum - 1
new[]
では、巨大な数を受け取ったときに例外をスローするのに、最大数を受け取ったときに割り当てようとするのはなぜsize_t
ですか? 1111...1
と1111...0
forはどう違いnew[]
ますか?:)
前もって感謝します!
xorg - IntelSandyBridge (Intel HD Graphics 3000) での「X エラー」BadAlloc GLX BadContext
GraphicsModi に必要なdebian stable
3 つのパッケージを含む 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
。
memory - メモリ不足 - システムが最近使用されていないページ アウトを行わないのはなぜですか?
非常に集中的なグラフィックス作業を行うプログラムがあり、大量のメモリ (> 8GB) を必要としますが、私のマシンには現在 8GB の RAM しかありません。つまり、メモリが不足すると、プログラムは不正な割り当てをスローします。
このプログラム以外にも、メイン メモリを少し使用するプログラムをいくつか開いていましたが、ほとんどの場合、プログラムがメモリを消費しているだけでした。
bad_alloc
ここで、メモリ使用量が 8 GB を超えると、ページ フォールトや一部のページのスワップ アウトではなく、なぜシステムがエラーをスローするのか疑問に思いました。それは、ページングと仮想メモリが解決するはずの問題の 1 つではありませんか?
最近アクセスされていないページをページアウトするだけで、必要なメモリ用に新しいページを作成できる場合、8 GB を超えるメモリを必要とするプログラムを実行できるはずです。
誰でも説明できますか?
私のマシンには 8GB のページ ファイルがあります。
c++ - 動的メモリ割り当てが 600MB を超えると失敗するのはなぜですか?
3 次元の char 配列を使用してブルーム フィルター (ビット テーブル) を実装しましたが、メモリを割り当てることができなくなり、 bad_allocメッセージが表示されるまではうまく機能します。600MB を割り当てた後、次の拡張リクエストでこのエラーが発生します。
ブルーム フィルター (配列) は、8 ~ 10 GB の大きさになると予想されます。
ビットテーブルを割り当てる(展開する)ために使用したコードは次のとおりです。
配列の最大許容サイズはいくらですか。これが問題でない場合は、どうすればよいですか。
編集: 32 ビット プラットフォームを使用して開発されています。
8 GB RAM を搭載した 64 ビット プラットフォーム (サーバー) で実行されます。
c++ - リストとの割り当てが正しくありません
私はこの仮想メソッドを持っています:
はどこchildren
にあり、std::list<std::shared_ptr<base_class>>
はをmy_class
継承しbase_class
ます。しかし、(のmy_class::to_string
)最初の再帰呼び出しの後、そしてこの子を返した後str
、私は悪い割り当てを取得します。
なんで?