C ++로 작성된 몇 가지 게임을 알고 있지만 예외는 사용하지 않습니다. C ++에서 메모리 할당 실패 처리는 일반적으로 std::bad_alloc
예외를 중심으로하기 때문에 이러한 게임은 이러한 실패를 어떻게 처리합니까?
그들은 단순히 충돌합니까, 아니면 메모리 부족 오류를 처리하고 복구하는 다른 방법이 있습니까?
std::terminate
실제로 비활성화되어있는 경우 프로그램은 대신을 호출해야 합니다. 그러나 동일한 제한 하에서 할당은 예외를 발생시키는 대신 널 포인터를 리턴 할 수 있으며, 그 결과를 별도로 확인하고 처리 할 수 있습니다.
ClassName variableName = new(nothrow) ClassName();
( 분명히 클래스 이름, 변수 이름 등 대체 할당이 실패한다면, 당신이 말하는하여 검색 할 수 있습니다) if(!variableName)
오류가 시도 - 캐치 예외 블록없이 처리 할 수 있도록합니다. 메모리가 같은 함수를 사용하여 할당되어있는 경우 마찬가지로 malloc()
, calloc()
할당 한 후 등의 실패를 동일한 사용하여 검출 될 수 if(!variableName)
시도 캐치 없이도 방법. 게임이 이러한 오류를 처리하는 방법에 관해서는, 그 시점에서 게임 개발자는 충돌 여부를 결정해야합니다.