1. ホーム
  2. C++

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
}