构造函数分配内存失败是如何冒出来的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数分配内存失败是如何冒出来的?相关的知识,希望对你有一定的参考价值。
我想知道如果我在一个本身是动态的对象的构造函数中没有分配内存会发生什么。
举例来说,我正在动态地分配一个对象,并且我正在检查这个对象是否被分配到了内存。
假设我正在动态地分配一个对象,并且我正在检查这个对象是否被分配。
Object* object = new(nothrow) Object();
if (object == nullptr) // handle stuff
如果对象的构造函数 Object()
像这样分配一个指针数组 new int[n]
.
我的问题是,如果指针数组分配失败。会不会导致 object
被设定为 nullptr
? 还是说这是一个截然不同的案件来处理?
感谢任何帮助! (也请不要用智能指针STL替代。我想知道这是如何工作的)。)
答案
在这种情况下,会抛出一个异常。
在这种情况下,一个异常被抛出。new(nothrow)
只意味着没有为对象分配存储空间不会抛出,它不会对对象构造函数(也不会对子对象的构造函数)进行约束。
以上是关于构造函数分配内存失败是如何冒出来的?的主要内容,如果未能解决你的问题,请参考以下文章