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。

相关推荐
码云数智-大飞2 分钟前
TLS 1.3的革新:更快的速度与更强的安全性
开发语言·php
南境十里·墨染春水7 分钟前
linux学习进展 线程同步——条件变量
java·开发语言·学习
白夜111710 分钟前
静态库vs动态库
c++·笔记
sghuter10 分钟前
数字资源分发的技术架构与未来趋势
c语言·开发语言·后端·青少年编程
普修罗双战士18 分钟前
【开发工具IDEA调试,高频使用, IntelliJ IDEA 调试快捷键完全指南】
java·开发语言·intellij-idea
小辉同志24 分钟前
45. 跳跃游戏 II
c++·leetcode·游戏·贪心算法
海参崴-24 分钟前
C++ 进阶篇 STL 模拟实现二叉搜索树
开发语言·c++
Sakuyu4346829 分钟前
C语言基础(三)
c语言·开发语言
cpp_250130 分钟前
P2871 [USACO07DEC] Charm Bracelet S
数据结构·c++·算法·动态规划·题解·洛谷·背包dp
郝学胜-神的一滴32 分钟前
深入epoll反应堆模型:从libevent源码看高性能IO设计精髓
linux·服务器·开发语言·c++·网络协议·unix·信息与通信