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

저는 이것이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

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!