C++メモリが確保できないときの処理 Windows

メモリが確保できないときのデフォルトの処理

malloc

NULLを返す

new

std::bad_alloc例外を投げる。

_set_new_handler

_set_new_handlerを使うと、newでメモリが確保できなかったとき呼ばれる関数(ハンドラ)を指定できる。この関数はガーベージコレクションとして使われることが想定されていて、0以外を戻すと再度メモリ確保が試みされて失敗すればまたハンドラが呼ばれる。0を返すと失敗で、std::bad_alloc例外が投げられる。

上記ソースでは試していないが、_set_new_mode(1)を呼べば、mallocのときでも同様の処理ができるようだ。

ソースコード

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です