构造函数中分配内存失败如何冒泡
How does failure to allocate memory in constructor bubble up
我想了解如果我未能在构造函数中为本身是动态的对象分配内存会发生什么。
示例:
假设我正在动态分配一个对象,我正在检查该对象是否已分配:
Object* object = new(nothrow) Object();
if (object == nullptr) { // handle stuff }
现在,如果 Object()
的构造函数像这样分配一个指针数组 new int[n]
。
会怎样?
我的问题是指针数组分配是否失败。这会导致 object
被设置为 nullptr
吗?或者它是一个明显不同的案例来处理
感谢任何帮助! (也请不要使用智能指针/STL 替代品。我想知道这是如何工作的)
在这种情况下会抛出异常。
new(nothrow)
只表示为对象分配存储失败不会抛出,它不对对象构造函数(也不是子对象的构造函数)施加约束。
我想了解如果我未能在构造函数中为本身是动态的对象分配内存会发生什么。
示例:
假设我正在动态分配一个对象,我正在检查该对象是否已分配:
Object* object = new(nothrow) Object();
if (object == nullptr) { // handle stuff }
现在,如果 Object()
的构造函数像这样分配一个指针数组 new int[n]
。
我的问题是指针数组分配是否失败。这会导致 object
被设置为 nullptr
吗?或者它是一个明显不同的案例来处理
感谢任何帮助! (也请不要使用智能指针/STL 替代品。我想知道这是如何工作的)
在这种情况下会抛出异常。
new(nothrow)
只表示为对象分配存储失败不会抛出,它不对对象构造函数(也不是子对象的构造函数)施加约束。