c++ - 在构造函数中分配内存失败如何冒泡
问题描述
我试图了解如果我未能在构造函数中为本身是动态的对象分配内存会发生什么。
例子:
假设我正在动态分配一个对象,并且正在检查该对象是否已分配:
Object* object = new(nothrow) Object();
if (object == nullptr) { // handle stuff }
现在,如果构造函数Object()
像这样分配一个指针数组会怎样new int[n]
。
我的问题是指针数组分配是否失败。这会导致object
被设置为nullptr
吗?或者它是一个明显不同的案例来处理
任何帮助表示赞赏!(也请不要使用智能指针/ STL 替代品。我想知道它是如何工作的)
解决方案
在这种情况下会引发异常。
唯一意味着为new(nothrow)
对象分配存储失败不会抛出,它不会对对象构造函数(也不是子对象的构造函数)施加约束。
推荐阅读
- jquery - 使用 Jquery 的 css("property","style") 方法对 html 内容进行样式化
- java - 为什么 for 循环的行为不同?
- c# - 如何实现从 .NET 4.0 WinForms 应用程序到 ASP.NET Core 作为服务的访问?
- cypher - 如何通过密码外壳(Windows)将.cypher的匹配结果写入文本文件?
- python - 无法使用 PySimpleGUI 建表
- windows-10 - Tomcat 9 从 iis 10 重定向
- python - 我怎样才能扭转这个三角形?目的是做一个菱形
- python - 我正在用python编写单元测试。导入模块时出现此错误
- typescript - 从多种类型中创建一个对象类型
- c - sigaction未初始化gcc 7