c++ - 使用 new 创建构造函数抛出的对象时,是否会泄漏构造的对象?

标签 c++ memory-management memory-leaks

<分区>

我找不到这个简单问题的答案:

给定一个在其构造函数中抛出的类:

class Foo { 
    Foo() { throw std::logic_error(); }
}

如果我使用 new 运算符从此类创建一个新对象,那么我会泄漏创建的对象吗?

new Foo(); // << does this leak the Foo?

最佳答案

不,你不会有内存泄漏。然而,可以公平地说,在构造函数中投入使用通常被认为是一种不好的做法,因为您可能最终会半构建一个对象(取决于您的类),然后您应该依靠您的类的用户来检测构造失败测试某种标志变量。

关于c++ - 使用 new 创建构造函数抛出的对象时,是否会泄漏构造的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39595198/

相关文章:

c++ - 当使用 std::vector::push_back 插入未知数量的元素时,是否应该在每次推送时检查 std::vector::max_size?

c# - 仅在 Win8 下 Storyboard中的内存泄漏?

objective-c - unsafe_retained 属性

C++列表分配不规则内存

java - android/java - 当没有对实例的引用时如何得到通知

c++ - 预编译头文件?我们真的需要它们吗

c++ - 在 Xcode 中静态链接 Nvidia 的 Cg 框架

memory-leaks - Valgrind : non-zero exit code only if memory is definitely lost

c++ - 释放内存以设置在 C++ 中

c++ - 在类 C++ 中存储指向 istream 和 ostream 的指针