この endless loop
是为了等分配成功内存然后返回指针, 不过我的操作系统知识非常不扎实(非科班), 所以想请教下大家这里的endless loop
的第二个if
がどのように分析されるのかを知っています (ここでのハンドルの処理など)
ありがとう
阿神2017-05-16 13:32:35
_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