如果我定义了一个异常类
class Exception : public std::runtime_error
{
/*...*/
private:
std::exception_ptr next;
std::exception_ptr prev;
}
其中我引用next
的待处理异常以及this
等待prev
时新的抛出异常,处理异常后是否释放异常?我问的原因是,我曾经听说std::exception_ptr
是在引用计数方面实现的,这可能会导致内存泄漏,如果我在这个类中产生了引用cicles。
答案 0 :(得分:1)
我问的原因是,我曾经听说
std::exception_ptr
是在引用计数方面实施的[...]
不一定,但也可能。 C ++ 11标准的第18.8.5 / 6段在一个注释中提到了这一点:
typedef unspecified exception_ptr;
[...]
6 [注意:实现可能会将引用计数的智能指针用作
exception_ptr
。 - 端 注意]
因此,您可能不希望建立exception_ptr
。