std::nothrow 使用介绍
时间: 2023-07-02 08:15:41 浏览: 146
effective_notes:看effective c++系列,做下笔记
std::nothrow 是一个 C++ 标准库中的异常处理机制,它可以用于在发生内存分配失败时避免抛出异常。使用 std::nothrow 时,在尝试分配内存时如果没有足够的可用内存,将返回一个空指针,而不是抛出 std::bad_alloc 异常。这种机制通常用于对性能和内存分配失败的容错处理。
下面是使用 std::nothrow 的一个示例:
```c++
#include <iostream>
#include <new>
int main() {
int* ptr = new (std::nothrow) int[1000000000000];
if (ptr == nullptr) {
std::cout << "Memory allocation failed" << std::endl;
} else {
std::cout << "Memory allocation succeeded" << std::endl;
delete[] ptr;
}
return 0;
}
```
在上面的示例中,我们在尝试分配一个非常大的整数数组时使用了 std::nothrow。由于分配的内存超出了可用的内存,程序会输出“Memory allocation failed”。注意,在使用 std::nothrow 时,我们必须检查返回的指针是否为 nullptr,以确定内存分配是否成功。
阅读全文