c++ - 在构造函数中捕获异常

标签 c++ exception-handling

以下示例可能会导致内存泄漏,因为析构函数不会针对在其构造函数运行期间处理异常的对象运行。我在哪里处理这个内存泄漏?

#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/

相关文章:

C++:char** 到 const char** 的转换

java - 如何忽略 Java 中的异常

python - xlsxwriter 模块无法正确打开/关闭 Excel 文件

c++ - 什么会导致 C++ .exe 和 .dll 只能在其构建所在的机器上运行?

python - 使用 pybind11 嵌入 python。虚拟环境不行

c++ - 使用友元类减少编译时间和依赖性

c++ - 声明结构表时出现 std::bad_alloc 错误

Ruby 自定义错误类 : inheritance of the message attribute

java - Java中已检查和未检查的异常,这些断言是否正确?

java抛出异常而不捕获它?