构造函数分配内存失败是如何冒出来的?

问题描述 投票:0回答:1

我想知道如果我在一个本身是动态的对象的构造函数中没有分配内存会发生什么。

举例来说,我正在动态地分配一个对象,并且我正在检查这个对象是否被分配到了内存。

假设我正在动态地分配一个对象,并且我正在检查这个对象是否被分配。

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

如果对象的构造函数 Object() 像这样分配一个指针数组 new int[n].

我的问题是,如果指针数组分配失败。会不会导致 object 被设定为 nullptr? 还是说这是一个截然不同的案件来处理?

感谢任何帮助! (也请不要用智能指针STL替代。我想知道这是如何工作的)。)

c++ memory-management out-of-memory
1个回答
4
投票

在这种情况下,会抛出一个异常。

在这种情况下,一个异常被抛出。new(nothrow) 只意味着没有为对象分配存储空间不会抛出,它不会对对象构造函数(也不会对子对象的构造函数)进行约束。

© www.soinside.com 2019 - 2024. All rights reserved.