C++ - msvc の演算子 new() とハンドルについて疑問がありますか?
淡淡烟草味
淡淡烟草味 2017-05-16 13:30:35
0
1
857
リーリー

この endless loop是为了等分配成功内存然后返回指针, 不过我的操作系统知识非常不扎实(非科班), 所以想请教下大家这里的endless loop的第二个if がどのように分析されるのかを知っています (ここでのハンドルの処理など)

ありがとう

淡淡烟草味
淡淡烟草味

全員に返信(1)
阿神

_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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート