下面的代码会导致资源泄漏吗?
will following code cause resource leak?
class Base {
public:
Base(int i1, int i2): ip1{new int(i1)}{
try {
ip2 = new int(i2);
} catch (std::bad_alloc& ){
delete ip1;
}
}
~Base() { delete ip1; delete ip2; }
private:
int *ip1, *ip2;
};
class Derived: public Base {
public:
Derived(int i1, int i2, int i3): Base(i1, i2), ip3(new int(i3)) {}
~Derived() { delete ip3; }
private:
int *ip3;
};
在派生构造函数中不使用try-catch。我想知道如果ip3(new int(i3))抛出异常,ip1和ip2分配的内存是否会被删除? 是的,但是您可以通过使用unique_ptr
和make_unique
来实现同样的事情。
相关文章:
- 具有瞬态资源的RAII类
- valgrind-hellgrind与泄漏检查的结果不同
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 从构造函数抛出异常时如何克服内存泄漏
- Klocwork Inside的资源泄漏
- C Winsock接受内存泄漏/资源泄漏
- 资源泄漏与否(Mac OS X)
- 资源泄漏:fExclfile
- 内核资源泄漏BIO_do_connect
- 如何更正GDI资源泄漏
- 数组中的资源泄漏
- 删除运算符导致资源泄漏
- 多态性=资源泄漏中基类缺少虚拟析构函数
- 下面的代码会导致资源泄漏吗?
- 使用std::uninitialized_copy的Stroustrup示例中的资源泄漏
- 资源泄漏opengl/win32
- MFC SendMessage()中的资源泄漏
- 从RAII对象泄漏资源
- 了解c++中内存泄漏的良好资源/书籍
- 我的程序泄漏了boost::shared_ptr拥有的资源