关于新运算符(operator),我有两个问题:

  • 新运算符(operator)可以分配内存失败吗?
  • 如果确实创建了一个对象,则在每次使用new后是否应该进行测试?
  • 最佳答案

    operator new throws a std::bad_alloc exception on failure,除非您明确使用nothrow版本。因此,不要检查返回值:如果在构造函数调用之后到达下一行,则可以安全地假定构造函数成功。

    但是一定要将代码的适当范围的分支包装在try-catch块中:通常不直接在新调用周围,而是在行的某个地方可以调用所有依赖于分配的内容,而没有别的。

    更新:但也请参见乔纳森·莱弗勒(Jonathan Leffler)在以下有关new的nothrow变体的评论。

    关于c++ - 新运算符(operator)是否应该始终检查是否工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5197732/

    10-11 23:03
    查看更多