![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| greykardinal |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Тема поднималась уже не раз, но ответа я для себя не нашел.
В программме есть куча глобальных переменных:
В обработчике на главной форме я выделяю динамически память, в другом обработчике - освобождаю
После вызова delete память не освобождается (смотрю по Task'у), освобождается после вызова деструктора главной формы. Всегда считал, что вызов delete уничтожает динамические объекты, а тут не получается Подскажите , как мне освобождать память не закрывая главную форму ЗЫ. И подскажите, может я неправильно представляю механизм работы new-delete. |
||||||
|
|||||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
чтобы удалить динамисеский массив, нужно писать так:
delete [] ArrayName; -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
delete s этим ты удалил только что выделил тут s = new char *[Len];
А вот тут ты выделил память s[i]= new char[120]; но не удалил ее. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| greykardinal |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Для простоты оставил только массив s[][]. Выделил память
Написал вместо
Толку никакого. Как забрала прога метров 80, так и висят они((( Кто-нить может подсказать, как освободить память. |
||||||
|
|||||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
||||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
s - это массив указателей. когда ты его удаляешь - удаляются указатели на объекты. но не сами объекты. перед удалением s нужно удалить все элементы в нём. для каждого из них вызывая delete / delete[] |
|||
|
||||
| greykardinal |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Нечто вроде
Так? |
||||
|
|||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Попробовал.
При i=0 ошибка:"Access violation at adress ... in module Project1.exe". Похоже я пытаюсь обратиться к объекту, которого не существует. Я пока ничего не понимаю. к сожалению Все, разобрался. Была локальная копия поэтому шла ругань Всем большое спасибо за помощь Это сообщение отредактировал(а) greykardinal - 13.2.2010, 20:19 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
запомни на каждый new должен быть delete
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |