c++ - msvc의 new() 연산자와 핸들에 대해 몇 가지 의구심이 있습니까?
淡淡烟草味
淡淡烟草味 2017-05-16 13:30:35
0
1
842
으아악

저는 이것이 endless loop是为了等分配成功内存然后返回指针, 不过我的操作系统知识非常不扎实(非科班), 所以想请教下大家这里的endless loop的第二个if 어떻게 분석되는지 알고 있습니다(여기서 핸들 처리 등

).

감사합니다

淡淡烟草味
淡淡烟草味

모든 응답(1)
阿神

_callnewh는 메모리 할당 실패를 처리하기 위해 핸들을 호출합니다. 이 핸들은 일부 메모리를 해제하려고 시도하거나 일정 시간 동안 기다리거나 직접 예외를 발생시킬 수 있습니다. 핸들 호출이 _callnewh(size) != 0을 성공적으로 반환하면 new는 호출이 _callnewh(size) == 0에 실패하면 다시 적용을 시도합니다. 이상. _callnewh(size) != 0,那么new会再一次尝试申请,如果调用失败_callnewh(size) == 0,则抛出相关异常。

if (size == SIZE_MAX)说明申请的对象数太多(size_t理论上能表达任何对象的数量)。else

if (size == SIZE_MAX)는 신청한 개체 수가 너무 많다는 의미입니다(size_t는 이론적으로 모든 개체의 수를 표현할 수 있음). else는 일반적인 애플리케이션 오류입니다. std_bad_array_new_length 및 std_bad_alloc은 표준 라이브러리의 해당 예외를 참조합니다.

관련 인터페이스: _set_new_handler🎜
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿