Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вылетает при удалении памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсортировать слова по алфавиту методом выбора и записать в новый файл http://www.cyberforum.ru/cpp-beginners/thread78411.html
Пишу на ms visual c++ 6 Оконное приложение.Первая кнопка читает текстовый файл и выводит слова в первый эдитбокс. Вторая должна отсортровать эти слова по алфавиту методом выбора и записать в новый...
C++ Динамические массивы 1. Добавить после каждого четного элемента элемент со значением 0 2. Добавить столбец в конец матрицы :-[пожалуйста http://www.cyberforum.ru/cpp-beginners/thread78407.html
задание на массивы и бесконеч.сумму ряда. C++
Прошу о помощи уважаемые форумчане.Столкнулась с проблемой в написании программ: 1)Дана последовательность и n действительных чисел.Найти номер первого максимального элемента.(используя одномерный...
Перегрузка операторов для классов C++
Определить класс описывающий вектор в пространстве. Для класса перегрузить префиксный унарный оператор. Написать программу в которой используеться перегруженый оператор. Добавлено через 3 минуты...
C++ Проконсультируйте с програмкой http://www.cyberforum.ru/cpp-beginners/thread78381.html
Ввести строку символов, в которой могут быть символы вернего и нижнего регистров. Нужно символы верхнего регистра заменить символом " * ". Я так понял что для этого можно воспользоватся таким...
C++ Функции (рекурсия) Помогите, пожалуйста, решить задачи!!!!! Задание №1: Для заданного натурального числа n вычислить n-й член рекуррентной последовательности Un, задаваемой с помощью следующих формул: U1 = 1;... подробнее

Показать сообщение отдельно
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144

Вылетает при удалении памяти - C++

23.12.2009, 01:44. Просмотров 940. Ответов 11
Метки (Все метки)

У меня тут конфуз:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class InversTree
{
    struct element
    {
        double data;
        element *parent;
        element () {data=0; parent=NULL;}
        element (double num, element* _par=NULL) {data=num; parent=_par;}
    };
    int num_of_leaves;          //кол-во листьев
    element **leaves;           //массив листьев
    int cur_leaf;               //текущий листок
    element *current;           //текущий элемент
public:
    //функции всякие
};
 
InversTree::~InversTree ()
{
    element *tmp, *tmp2;
    for(int i=0; i<num_of_leaves; i++)
    {
        current=leaves[i]->parent;
        delete leaves[i];
        while(current!=NULL)
        {
            tmp = current;
            for(int j=0; j<num_of_leaves; j++)
            {
                if (j==i) continue;
                tmp2=leaves[i];
                while(tmp2->parent!=NULL && tmp2->parent!=tmp)
                    tmp2=tmp2->parent;
                tmp2->parent=NULL;
            }
            current = current->parent;
            delete tmp;
        }
    }
    delete [] leaves;
}
Когда выполняется деструктор, борланд вылетает на рабочий стол. На последней строке - delete [] leaves;

Я вроде и так и сяк для памяти проверки делаю, а хрен!
Подскажите плиз, что не так?

Добавлено через 2 минуты
На всякий случай - это инверсное дерево, т.е. элементы имеют ссылки на родителя. Храним только листья.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru