проблема с очисткой памяти и указателями
каждый узел имеет свои данные, указатель на потомков и предка.
данные - другой класс. по сути - динамическая строка
class Tree
{
public:
Word data;
int operation;
Tree* parent;
Tree* left_son;
Tree* center_son;
Tree* right_son;
int sign;
и т.д.
}
в программе много рекурсий. создание дерева - рекурсия. обработка - рекурсия.
вначале с памятью не заморачивался и даже деструктор пустым оставлял.
но потом на некоторых данных прога стала выдавать ошибки.
типичный пример такой ошибки:
используется метод класса Tree,
внутри метода всё отлично,
вконце метода всё правильно,
а после выхода из метода, получаю кривые данные (пустое дерево, или перекорёженное).
ещё момент.
прога работает с массивами данных и если эти массивы делить на мелкие куски, то всё обрабатывается правильно.
так понимаю проблема с памятью.
подскажите пожалуйста, как написать корректный деструктор. и, может, кто знает как избежать подобных ошибок.
(вполне вероятно я неверно использовал ссылки/указатели и проблема из-за этого, тогда прошу написать пример какого-нибудь простенького метода)
как минимум.
А как написать корректный деструктор, та еще и написать пример - не видя конкретного кода
Вероятно твой случай - это как раз тот, когда НУЖНО использовать умные указатели,