Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проблема с очисткой памяти и указателями

83K
12 июля 2012 года
ant325
1 / / 12.07.2012
есть класс, представляющий собой узел дерева.
каждый узел имеет свои данные, указатель на потомков и предка.
данные - другой класс. по сути - динамическая строка

class Tree
{
public:
Word data;
int operation;
Tree* parent;
Tree* left_son;
Tree* center_son;
Tree* right_son;
int sign;
и т.д.
}

в программе много рекурсий. создание дерева - рекурсия. обработка - рекурсия.
вначале с памятью не заморачивался и даже деструктор пустым оставлял.
но потом на некоторых данных прога стала выдавать ошибки.
типичный пример такой ошибки:
используется метод класса Tree,
внутри метода всё отлично,
вконце метода всё правильно,
а после выхода из метода, получаю кривые данные (пустое дерево, или перекорёженное).

ещё момент.
прога работает с массивами данных и если эти массивы делить на мелкие куски, то всё обрабатывается правильно.
так понимаю проблема с памятью.

подскажите пожалуйста, как написать корректный деструктор. и, может, кто знает как избежать подобных ошибок.
(вполне вероятно я неверно использовал ссылки/указатели и проблема из-за этого, тогда прошу написать пример какого-нибудь простенького метода)
1
12 июля 2012 года
kot_
7.3K / / 20.01.2000
самое простое правило - каждому нью - должен быть свой делит.
как минимум.
А как написать корректный деструктор, та еще и написать пример - не видя конкретного кода и конкретных денег за чужую работу - достаточно сложно.
Вероятно твой случай - это как раз тот, когда НУЖНО использовать умные указатели, либо реализовывать свой аналог

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог