C++之nothrow

news/2025/2/21 14:03:13/

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。


http://www.ppmy.cn/news/1456766.html

相关文章

Servlet(一些实战小示例)

文章目录 一、实操注意点1.1 代码修改重启问题1.2 Smart Tomcat的日志1.3 如何处理错误 一. 抓自己的包二、构造一个重定向的响应&#xff0c;让页面重定向到百度主页三、让服务器返回一个html数据四、表白墙4.1 约定前后端数据4.2 前端代码4.3 后端代码4.4 保存在数据库的版本…

Java常用API之LinkedList类解读

写在开头&#xff1a;本文用于作者学习我将官方文档中LinkedList 1.6版本中类中绝大部分API全测了一遍并打印了结果&#xff0c;日拱一卒&#xff0c;常看常新。 自己补充了一些对该数据结构的理解&#xff0c;如有不对的地方&#xff0c;请各位指正&#xff0c;谢谢。 首先&…

【蓝桥杯备赛国赛】5-5

文章目录 求阶乘双子数 求阶乘 求阶乘 分析k的范围&#xff0c;10的18次方。这个数字很大 想要末尾有0的存在必须要2和5&#xff0c;但是通过分析2的数目应该是远远多于5的&#xff0c;所以只要5的数目够多即可。所以for循环的层次也是10的九次方以上&#xff0c;必然会超时&…

Java jar程序CPU异常高问题排查

文章目录 一、命令排查二、脚本排查方法一 curl脚本文件直接用bash运行方法二 下载脚本文件并运行一、命令排查 1.使用 top 定位到占用CPU高的进程PID top2.获取进程PID信息 ps aux | grep [PID]3.找到占用CPU高的线程 ps -mp [PID

python数据分析-老龄化分析

一、研究背景介绍和分析安排 中国作为世界上人口最多的国家&#xff0c;其人口结构的变化对国内外经济都有着深远的影响。近年来&#xff0c;中国的老龄人口比例不断上升&#xff0c;这一变化引起了广泛的社会关注和政策讨论。老龄化带来的挑战包括劳动力市场紧缩、养老金负担…

spring高级篇(五)

1、参数解析器 前篇提到过&#xff0c;参数解析器是HandlerAdapters中的组件&#xff0c;用于解析controller层方法中加了注解的参数信息。 有一个controller&#xff0c;方法的参数加上了各种注解&#xff1a; public class Controller {public void test(RequestParam("…

MySQL学习笔记9——触发器和权限管理

触发器和权限管理 一、触发器1、如何操作触发器2、触发器的优缺点 二、权限管理1、角色的作用2、角色的操作3、用户的操作 一、触发器 当商品信息和库存信息分别存放在两个不同的数据表中时&#xff0c;可以创建一个触发器&#xff0c; 让商品信息数据的插入操作自动触发库存数…

Python面向对象编程思想的深入学习

魔术方法的使用 案例体验 class Student:def __init__(self, name, age):self.name nameself.age age# __str__魔术方法, 如果不去写这个方法&#xff0c;那么print输出的则是信息存储的内存地址。def __str__(self):return fStudent类对象&#xff0c;name:{self.name}, ag…