下面的示例會留下可能的內存泄漏,因爲析構函數不會在其構造函數運行期間處理異常的對象運行。我在哪裏處理這個內存泄漏?在構造函數中捕獲異常
#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。 –