c++ - 每当动态分配内存时,您总是必须检查 bad_alloc 吗?
问题描述
如果 new 找不到足够的内存,则会引发异常。我绝对总是需要检查吗?我从来没有这样做过,也没有任何问题,但现在我读到你应该这样做。还是仅在某些情况下?
try
{
pPos = new Vector2D(5,1);
}
catch(bad_alloc)
{
// NO MEMORY!
}
解决方案
没有什么特别之处bad_alloc
,你可以像捕捉任何其他异常一样捕捉或不捕捉它。抓住它是不寻常的。如果您有某种方法可以从内存不足的情况中恢复,您只会这样做。但我认为旨在处理内存不足错误的程序更常用的是以下nothrow
版本new
:
pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
// NO MEMORY!
}
推荐阅读
- swift - SwiftUI 状态 PropertyWrapper 行为
- javascript - Laravel 事件广播没有被拾取 laravel-echo-server
- c++ - 为 sLinkedList 编写插入函数时抛出异常
- java - @Transactional 方法在异常和多线程 wildlfy CDI 上插入值
- php - 从 php 控制器将 html 文件呈现为 html
- c++ - C++ 使用旧编译器 GCC 4.4.0 在结构列表中查找字符串
- java - 如何在 iText 7 中标记标题
- javascript - 在 JavaScript 中解析嵌套的 XML 矩阵
- java - FileWriter不知何故用中文写
- c# - 如何替换以下特殊字符是C#中的字符串�