У меня есть простая (я полагаю) проблема с моим кодом на C++. Каждый раз, когда я инициализировать unique_ptr через конструктор я получаю ту же проблему:Инициализация C++ unique_ptr через конструктор
munmap_chunk(): недопустимый указатель: 0x00007ffc40ba6bf0
Вот код:
1) Частная часть класс:
template<typename T>
class Node{
typedef std::unique_ptr<Node> ptr;
T value;
ptr left, right;
2) Конструктор, инициализирующий ptr слева и справа:
explicit Node(const T value, Node* left = nullptr, Node* right = nullptr):
value{value}, left{left}, right{right} {}
В чем проблема? Спасибо за разъяснение или указав на меня в правильном направлении.
, вероятно, должен быть явным узлом (const T value, ptr left = nullptr, ptr right = nullptr): значение {значение}, left {std :: move (left)}, right {std :: move (right)} {} '. – Jarod42
В этом коде нет проблем, хотя передача в исходных указателях не идеальна. Фактическая проблема должна быть где-то в другом месте; Я подозреваю, что вы дважды освобождаете этих указателей. –
@ Jarod42 'move' ничего не делает для сырых указателей. –