gpt4 book ai didi

c++ - 什么时候应该使用 std::nothrow?

转载 作者:IT老高 更新时间:2023-10-28 12:43:19 30 4
gpt4 key购买 nike

std::nothrow的理想用法是什么?

最佳答案

我只会将它用作优化(或代码简化),否则我会在使用常规 new 时立即放置一个 try-catch block ,捕获 std::bad_alloc .

这是一种非常罕见的情况,因为很少能够在调用站点有效地处理内存不足。通常你分配内存是因为你需要它,而不是因为你很想拥有它但可以没有它。将空指针传递回调用者链直到最终有人可以处理该问题的代码不是惯用的 C++。

虽然确实可以立即处理错误,但也有可能发生。例如,您可能会在有足够工作空间的情况下使用一种算法或技术,而没有使用另一种较慢的算法或技术。再说一次,你会直接用 new 分配这样的工作空间吗?不正常。无论如何,您有时必须小心使用这种方法,因为如果您的操作系统过度使用,那么通常您无法在应用程序级别优雅地处理内存不足。

请注意,涉及 std::nothrow 的表达式仍然可以抛出异常(特别是从正在分配的对象的任何构造函数中),因此如果您希望避免,只需要 一个抛出异常。您还必须确保构造函数不会抛出。

就我而言,完全不使用异常的 C++ 程序的时代已经结束。我想如果他们为我恢复,由于某些特定的风格指南,那么这就是需要 nothrow new 的另一个可能的原因。

关于c++ - 什么时候应该使用 std::nothrow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718116/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com