この endless loop是为了等分配成功内存然后返回指针, 不过我的操作系统知识非常不扎实(非科班), 所以想请教下大家这里的endless loop的第二个if がどのように分析されるのかを知っています (ここでのハンドルの処理など)
endless loop
if
ありがとう
_callnewh は、メモリ割り当ての失敗を処理するハンドルを呼び出します。このハンドルは、メモリの解放を試みたり、一定時間待機したり、例外を直接スローしたりすることができます。ハンドル呼び出しが _callnewh(size) != 0,那么new会再一次尝试申请,如果调用失败_callnewh(size) == 0 を正常に返すと、関連する例外がスローされます。
_callnewh(size) != 0
_callnewh(size) == 0
if (size == SIZE_MAX)说明申请的对象数太多(size_t理论上能表达任何对象的数量)。elseこれは一般的なアプリケーションの失敗です。 std_bad_array_new_length および std_bad_alloc は、標準ライブラリ内の対応する例外を参照します。
if (size == SIZE_MAX)
else
関連インターフェース: _set_new_handler
_callnewh は、メモリ割り当ての失敗を処理するハンドルを呼び出します。このハンドルは、メモリの解放を試みたり、一定時間待機したり、例外を直接スローしたりすることができます。ハンドル呼び出しが
_callnewh(size) != 0
,那么new会再一次尝试申请,如果调用失败_callnewh(size) == 0
を正常に返すと、関連する例外がスローされます。if (size == SIZE_MAX)
说明申请的对象数太多(size_t理论上能表达任何对象的数量)。else
これは一般的なアプリケーションの失敗です。 std_bad_array_new_length および std_bad_alloc は、標準ライブラリ内の対応する例外を参照します。関連インターフェース: _set_new_handler