以下示例可能会导致内存泄漏,因为析构函数不会针对在其构造函数运行期间处理异常的对象运行。我在哪里处理这个内存泄漏?
#include <exception>
class MyClass {
public:
MyClass()
{
c = new char[5];
throw std::runtime_error("test");
}
~MyClass ()
{
delete[] c;
}
private:
char *c;
};
int main()
{
try
{
MyClass Obj;
}
catch (std::runtime_error)
{
}
}
最佳答案
在构造函数中捕获异常,整理(释放内存),然后在没有内存泄漏的情况下抛出异常。
关于c++ - 在构造函数中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7709780/