Можно ли создать утечку памяти с помощью std::exception_ptr
Если я определю класс исключения
class Exception : public std::runtime_error
{
/*...*/
private:
std::exception_ptr next;
std::exception_ptr prev;
}
в котором я ссылаюсь на ожидающие исключения next
и новые брошенные исключения в то время как this
в ожидании prev
освобождается ли исключение после обработки исключения? Я спрашиваю, потому что когда-то слышал std::exception_ptr
реализован с точки зрения подсчета ссылок, который может привести к утечкам памяти, если есть циклы ссылок, как я создал в этом классе.
1 ответ
Причина, по которой я спрашиваю, состоит в том, что я однажды услышал, что
std::exception_ptr
реализуется с точки зрения подсчета ссылок [...]
Не обязательно, но это может быть. Пункт 18.8.5/6 Стандарта C++11 упоминает об этом в примечании:
typedef unspecified exception_ptr;
[...]
6 [ Примечание: реализация может использовать умный указатель с подсчетом ссылок как
exception_ptr
, -конец примечания ]
Поэтому вы можете не захотеть устанавливать циклы exception_ptr
,