下面的示例会留下可能的内存泄漏,因为析构函数不会在其构造函数运行期间处理异常的对象运行。我在哪里处理这个内存泄漏?在构造函数中捕获异常
#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)
{
}
}
什么要求这个downvote? RAII是解决这个问题的最好方式,如果有人说不是这样的话。如果您觉得对Downvote负责任,那么有责任对我们解释为什么?如果你不能&只是*感觉*这是错误的,那么你没有足够的资格进行downvoting,让其他人这样做。 –
是基于C++ 11相关内容的解决方案吗? – user103214
不,这是C++ 03。 –