首页 > 解决方案 > 在构造函数中分配内存失败如何冒泡

问题描述

我试图了解如果我未能在构造函数中为本身是动态的对象分配内存会发生什么。

例子:

假设我正在动态分配一个对象,并且正在检查该对象是否已分配:

Object* object = new(nothrow) Object();
if (object == nullptr) { // handle stuff }

现在,如果构造函数Object()像这样分配一个指针数组会怎样new int[n]

我的问题是指针数组分配是否失败。这会导致object被设置为nullptr吗?或者它是一个明显不同的案例来处理

任何帮助表示赞赏!(也请不要使用智能指针/ STL 替代品。我想知道它是如何工作的)

标签: c++memory-managementout-of-memory

解决方案


在这种情况下会引发异常。

唯一意味着为new(nothrow)对象分配存储失败不会抛出,它不会对对象构造函数(也不是子对象的构造函数)施加约束。


推荐阅读