我知道有几种用C ++编写的游戏,但是没有使用异常。由于C ++中的内存分配失败处理通常围绕std::bad_alloc
异常进行,因此这些游戏如何处理此类失败?
它们只是崩溃了,还是有另一种方法来处理内存不足的错误并从中恢复?
std::terminate
,仅此而已。但是,在相同的限制下,分配可以返回空指针而不是引发异常,并且可以分别检查和处理结果。
ClassName variableName = new(nothrow) ClassName();
(显然是在替换类名,变量名等)。如果分配失败,您可以通过说if(!variableName)
允许在没有try-catch异常块的情况下处理错误来检测到它。同样地,如果存储器被使用函数等分配malloc()
,calloc()
等等,那么故障来分配可使用相同的被检测if(!variableName)
方法,而不需要一个try-catch。至于游戏如何处理这些错误,那时候,由游戏开发者决定是否崩溃。