R
Raschet5
На форме - кнопка, дерево TTreeView. По кнопке создаётся дерево элементов написанного мною класса. (Привязываю МОЁ дерево к TTreeView). Память выделяю new.
Указатель на корень делаю в модуле формы. При нажатии на кнопку снова, память под старым деревом должна освобождаться. Но при delete указатель_на_экземпляр_класса выводится ошибка ...EAccessViolation... Причём не на первом элементе (из 14 на 3-м).
Смотрю на адрес при трассировке new и сравниваю с тем что delete. Они те же. Пробовал делать массив указателей на все элементы дерева и потом через массив удалаять - результат тот же. Самое первое что сделал - рекурсивный деструктор. Но результат тот же.
Я не пойму в чём дело. Где искать. Я очень сильно забыл язык и среду и пытаюсь вспомнить всё. Подскажите на что обратить внимание. Где искать. Я заблокировал удаление вследствие путаницы в переменных и модулях или действительно адреса не так присвоил? Или может ещё чего.
Память выделяется нормально, как мне кажется. Я обращаюсь к экземпляру класса на котором идёт ошибка при удалении, но он выдаёт нормальные данные. Pointer->Summa, Pointer->ID всё показывает верно. При delete этого элемента трассировка уходит в Forms.hpp на строку
/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
Отрабатывает на ней раз 30 потом выдаёт ошибку. Что это за строка и что делает не знаю. Может это что-то объясняет? Подскажите кто знает. А то программа работает себе и жрёт память немеренно. И после десятка двух нажатий на кнопочку нужно перезапускать программу.
Указатель на корень делаю в модуле формы. При нажатии на кнопку снова, память под старым деревом должна освобождаться. Но при delete указатель_на_экземпляр_класса выводится ошибка ...EAccessViolation... Причём не на первом элементе (из 14 на 3-м).
Смотрю на адрес при трассировке new и сравниваю с тем что delete. Они те же. Пробовал делать массив указателей на все элементы дерева и потом через массив удалаять - результат тот же. Самое первое что сделал - рекурсивный деструктор. Но результат тот же.
Я не пойму в чём дело. Где искать. Я очень сильно забыл язык и среду и пытаюсь вспомнить всё. Подскажите на что обратить внимание. Где искать. Я заблокировал удаление вследствие путаницы в переменных и модулях или действительно адреса не так присвоил? Или может ещё чего.
Память выделяется нормально, как мне кажется. Я обращаюсь к экземпляру класса на котором идёт ошибка при удалении, но он выдаёт нормальные данные. Pointer->Summa, Pointer->ID всё показывает верно. При delete этого элемента трассировка уходит в Forms.hpp на строку
/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
Отрабатывает на ней раз 30 потом выдаёт ошибку. Что это за строка и что делает не знаю. Может это что-то объясняет? Подскажите кто знает. А то программа работает себе и жрёт память немеренно. И после десятка двух нажатий на кнопочку нужно перезапускать программу.