次の例では、コンストラクタの実行中に例外が処理されるオブジェクトに対してデストラクタが実行されないため、メモリリークが発生する可能性があります。このメモリリークはどこで処理できますか?コンストラクタ内の例外のキャッチ
#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)
{
}
}
このダウンボートは何が必要ですか? RAIIは、これについて行くための最善の方法であり、そうでなければ誰かが間違って言うならば。あなたがDownvoteに責任があると感じたら、なぜ私たちに説明するのに十分な責任感を感じますか?そして、もしこれが間違っていると感じることができないのであれば、あなたはdownvotingのために十分な資格がありません。 –
は、C++ 11関連のものに基づいたこのソリューションですか? – user103214
これはC++ 03です。 –