相关疑难解决方法(0)

为什么新的std :: nothrow版本没有被广泛使用

根据C++参考,您可以通过以下方式新建一个对象:

MyClass * p1 = new MyClass;
Run Code Online (Sandbox Code Playgroud)

或者

MyClass * p2 = new (std::nothrow) MyClass;
Run Code Online (Sandbox Code Playgroud)

第二个将返回空指针而不是抛出异常.

但是,根据我的经验,我几乎看不到这个版本.

例如,谷歌不建议在他们的代码中使用异常,但我们可以看到他们没有在Chromium中使用nothrow版本.

是否有任何理由我们更喜欢默认的一个而不是一个?即使在没有使用异常的项目中?

- 编辑 -

跟进问题:我应该检查返回值malloc()吗?

看起来,相反,许多人建议检查malloc的返回值,有些人说是因为:

许多分配失败与内存不足无关.碎片可能导致分配失败,因为即使有足够的可用内存,也没有足够的连续空间可用.

这是真的?为什么我们在这种情况下对待malloc()new()不同?

c++ malloc exception new-operator

20
推荐指数
2
解决办法
1万
查看次数

抛出C++ 0x异常的代价

在C++ 0x中抛出异常有什么性能影响?这个编译器依赖多少?这与询问输入try块的成本是不一样的,即使没有抛出异常.

我们是否应该期望更多地使用异常来处理Java中的常规逻辑处理?

c++ performance exception

14
推荐指数
5
解决办法
5890
查看次数

标签 统计

c++ ×2

exception ×2

malloc ×1

new-operator ×1

performance ×1