Можно ли создать утечку памяти с помощью 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,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]