C++ std::bad_alloc 例外
2022-02-25 01:04:29
1. 問題点
120w の行のデータを解析しているときに、プログラムがクラッシュして、システムが std::bad_alloc 例外を求めるプロンプトを表示します。
既知:この例外は、メモリ領域を割り当てるためにnewを使用したときに、十分なメモリ領域がない場合にスローされます。
解決方法 プログラムに delete と clear を追加して、適時にメモリを解放し、生データを分割します。
2. 例外処理
大きなメモリブロックの割り当て時に、メモリ割り当てに失敗した場合の例外処理。プログラムの実行エラーやクラッシュを回避する。
try-catchモジュール関数を使用して、tryにメモリ割り当て文を入れて、例外がすぐに一致するcatchブロックに処理に行けるようにします。catchの引数は例外タイプで、この場合std::bad_allocです。
int *a;
try
{
//allocate memory
a= new int[bigBigNum];
}
catch(std::bad_alloc)
{
//Exception handling
// pop up the prompt dialog
// return
}
関連
-
C++11での移動セマンティクス(std::move)と完全な前進(std::forward)。
-
C++ std::string は NULL で初期化できない、基本的な使い方
-
void* から char* への無効な変換」および「文字列定数から 'char*' への非推奨の変換」を解決 "
-
gcc/g++ コンパイル時のエラー解析で期待される型指定子の前に
-
警告を表示します。ISO C++は文字列定数を'char*'に変換することを禁じています[-Write-strings]。
-
C++: エラー C2228: '.str' の左側にはクラス/構造体/結合が必要
-
c++のエラー: エラーC2601: 'main' : ローカル関数定義が不正
-
抽象クラス型 "my class "のオブジェクトは使用できません 解決方法
-
C++11 ランダムライブラリ乱数
-
[エラー]'cout' はこのスコープで宣言されていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:エラー:'cout'は型名ではありません。
-
vs2015 はソースファイル stdio.h を見つけることができない 解決策
-
警告 - 符号付き整数式と符号なし整数式の比較 [-Wsign-compare] 解決方法
-
C++ - 文字列クラス超詳細紹介
-
error: '&' トークンの前にイニシャライザーがあるはずです。
-
error: label 'xxxxxxx' [-fpermissive] にジャンプします。
-
const char*' から `char*' への変換が無効な場合の対処法
-
c++ experience summary(1):linux c compile with warning: assign makes pointer from integer without cast reason.
-
C++ Error no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::string&)
-
"エラー:不完全なクラス型へのポインタは許可されません。"の前方宣言。