84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
저는 이것이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