new 演算子の例外
(もうちょっとちゃんと書く かもしれない)
new 演算子でメモリを確保するときに投げられる例外は,
bad_alloc
try{ int x = new int[100]; }catch(bad_alloc ba){ cout << "メモリ割り当てエラー" << endl; cout << ba.what(); return NULL; //exit(1); } // NULLが返ってきた時用 if(x == NULL){ cout << "メモリ割り当てエラー" << endl; return NULL; //exit(1); }
コンパイラによっては例外が投げられず,ただ,単にNULLがかえってくるものもある.
new(nothrow)
とするとnewでも例外を投げずにNULLを返すようになる.
int x = new(nothrow) int[100]; // 割り当てられなかったときはNULLしか返ってこないので,これだけ if(x == NULL){ cout << "メモリ割り当てエラー" << endl; return NULL; //exit(1); }