У меня следующая проблема:
Каждый раз, когда я выкидываю следующее исключение, я получаю предупреждение об утечке памяти Valgrind:
Мне удалось надежно отследить его до throw MyException{pointer}
заявлений, которые я имею в своей программе. - Если я закомментирую их, предупреждение исчезнет. У меня есть несколько других классов исключений, которые работают безупречно. Единственное различие между ними заключается в существовании переменной-указателя.
РЕДАКТИРОВАТЬ: я пробовал то же исключение с std :: string в качестве аргумента: ошибка Valgrind по-прежнему сохраняется.
Valgrind ошибка:
144 bytes in 1 blocks are possibly lost in loss record 7 of 15
(Информация о файле указывает на уже упомянутые операторы throw MyException{pointer}
.
Мое исключение:
// Forward declaration
class PointerClass;
class MyException : public std::exception
{
public:
MyException() = delete;
MyException(PointerClass* pointer) : pointer_{pointer}
{};
MyException(const MyException& other) = default;
MyException& operator=(MyException& other) = default;
~MyException() = default;
const char* what() const noexcept
{
return "my exception.";
}
const PointerClass* getPointer() const noexcept
{
return pointer_;
}
private:
PointerClass* pointer_ = nullptr;
};
Кто-нибудь знает, почему это так? происходит и как это исправить?