【发布时间】:2021-04-26 12:22:08
【问题描述】:
如果我使用new 并得到std::bad_alloc 编译器不要因为异常调用构造函数。但是它如何与nothrow new 一起工作,因为我们在每种情况下都会得到指针?这种情况的标准中是否有特殊段落?
【问题讨论】:
-
它只是返回
nullptr,显然没有创建对象。 -
如果没有存放对象的存储区域,在物理上是不可能调用构造函数的。
-
"...5-8) 非空指针,指向至少大小适当对齐的内存,或分配失败时的空指针..." en.cppreference.com/w/cpp/memory/new/operator_new
-
new做了两件事,调用malloc来“取代”然后在那个地方构造对象,如果第一个已经失败,则没有选择/理由去做其次,不会调用构造函数。
标签: c++ pointers exception new-operator nothrow