を使用して大量のメモリが動的に割り当てられると、が返されるnew
ため、プログラムがクラッシュする可能性があります。例外を使用すると、std::bad_alloc をキャッチして最適な処理を実行できます。new
NULL
try{
allocate_much_memory();
catch( std::exception e){
do_something_that_fits();
}
何らかの理由で例外を使用できない場合は、以下を確認する必要がありますNULL
。
BigBlob* allocate_much_memory(){
BigBlob *bblob = new BigBlob();
if( bblob == NULL ){
std::cerr << "uh-oh" << std::endl;
handle_error();
}
return bblob;
}
ポイントは、私が理解している限り、自分で NULL のチェックを作成する必要があるということです。サードパーティのライブラリからのものであるために関数を変更できず、例外を使用しない場合、何ができますか?
更新:new BigBlob()
の結果が:であるかどうかを確認している部分については、NULL
必要ありません: p = new Fred() の後に NULL を確認する必要がありますか? を参照してください。(古い) コンパイラに new を自動的にチェックさせて NULL が返されるかどうかを確認するにはどうすればよいですか?