다음 예제에서는 생성자가 실행되는 동안 예외가 처리되는 개체에 대해 소멸자가 실행되지 않으므로 메모리 누수가 발생할 수 있습니다. 이 메모리 누수는 어디서 처리합니까?생성자에서 예외 캐치
#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에 책임이 있다고 느끼면, 왜 우리에게 설명 할 책임이 있다고 느낍니까? 그리고 만약 당신이 * 단지 * 이것이 잘못되었다고 느끼지 못한다면, 당신은 하향 투표하기에 충분한 자격이되지 않습니다. –
은 C++ 11 관련 항목을 기반으로 한이 솔루션입니까? – user103214
아니요 C++ 03입니다. –