C++之nothrow

nothrow 是 C++ 中的一个关键字,用于改变 new 操作符的行为,使其在内存分配失败时不抛出异常,而是安静地返回一个空指针(nullptr )。这对于那些不希望或不能处理异常的代码片段特别有用。要使用 nothrow ,你需要包含 <new> 头文件,并在 new 表达式中传入 std::nothrow

1、使用new分配异常空间

如下图,它分配内存异常时,应用程序直接崩溃

2、使用new分配异常空间, **nothrow**处理异常

未崩溃,异常后**nothrow将其设为nullptr,此时10行输出日志便于定位问题**

3、使用new分配异常空间, **try cach**处理异常

try catch也可以捕获异常,避免程序完全崩溃

4、使用malloc分配空间,free释放

使用c标准的方式,malloc/free属于库函数,malloc在申请内存空间失败以后会返回一个nullptr指针,即使失败程序也不会崩溃

new如果分配失败了会抛出bad_alloc的异常,而malloc失败了会返回NULL。因此对于 new,可以采用try...catch语法但要适当捕获异常而且仅捕获有必要的代码段,也可以采用new(nothrow)的方法禁止抛出异常而返回NULL。

相关推荐
两年半的个人练习生^_^5 分钟前
JMM 进阶:彻底理解 volatile 实现原理
java·开发语言
晚风吹红霞7 分钟前
C++模板进阶:非类型参数、特化、分离编译与优缺点解析
开发语言·c++
小小龙学IT14 分钟前
Go语言后端开发入门指南
开发语言·后端·golang
不会C语言的男孩14 分钟前
C++ Primer 第8章:IO 库
开发语言·c++
兰令水22 分钟前
leecodecode【层序遍历】【2026.6.3打卡-java版本】
java·开发语言
Halo_tjn23 分钟前
反射与设计模式2
java·开发语言·算法
kaoa00027 分钟前
Linux入门攻坚——79、XEN虚拟化-2
linux·运维·开发语言
磊 子33 分钟前
C++仿函数以及STL内置仿函数
开发语言·c++
0x3F(小茶)36 分钟前
嵌入式C设计模式完全指南(基于《C嵌入式编程设计模式》)
c语言·开发语言·单片机·嵌入式硬件·设计模式
王璐WL41 分钟前
【C++进阶】map/multimap 容器详解:从基础使用到底层实现与高频面试题
c++