根据C++ 参考,您可以通过以下方式新建对象:
MyClass * p1 = new MyClass;
或通过
MyClass * p2 = new (std::nothrow) MyClass;
第二个将返回一个空指针而不是抛出异常。
但是,根据我的经验,我几乎看不到这个版本。
例如,谷歌不建议在他们的代码中使用异常,但他们也没有在 Chromium 中使用 nothrow 版本,正如我所见。
有什么理由让我们更喜欢默认的而不是 nothrow 吗?即使在不使用异常的项目中?
- 编辑 -
跟进问题:我应该检查返回值malloc()
吗?
看起来,相反,很多人建议检查 malloc 的返回值,有人说是因为:
许多分配失败与内存不足无关。碎片可能导致分配失败,因为即使有大量可用内存,也没有足够的连续空间可用。
这是真的?在这种情况下malloc()
,为什么我们要区别对待?new()