|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.08.2015, 11:02 | #1 |
Пользователь
Регистрация: 26.07.2015
Сообщений: 59
|
Освобождение памяти
Есть поток (основной) который постоянно запускает другие потоки, эти потоки записывают в переменные которые прописаны в threadvar некие данные, после чего завершают работу, в диспетчере задач используемая память постоянно увеличивается, и я думаю то что это изза того что переменные не очищаются после завершения работы потока, как собстна их почистить? все что использовал данный поток необходимо просто удалить....
Судя по недавним полученным знаниям я предполагаю что Код:
а вот Код:
есть предположение что мне поможет что то вроде: Код:
только вот у меня есть обработка исключительных ситуаций, в некоторых из них есть завершение работы потока, с помощью exit, как мне можно будет очистить память при завершении потока? может что то вроде: Код:
кстати FreeOnTerminate=true у меня стоит для каждого запускаемого потока, это как я понял должно обеспечить корректное удаление всех используемых данных у потока и еще вопрос: представим код: Код:
Что будет если код будет таким: Код:
Последний раз редактировалось vipok72; 04.08.2015 в 11:56. |
04.08.2015, 12:11 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Можно увидеть твой боевой код?
I'm learning to live...
|
04.08.2015, 12:19 | #3 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
Цитата:
А дальше надо смотреть КАК написан твой Destroy. Обеспечивает ли он корректное удаление созданных объектов? Видимо нет.
программа — запись алгоритма на языке понятном транслятору
|
|
04.08.2015, 12:27 | #4 |
Пользователь
Регистрация: 26.07.2015
Сообщений: 59
|
Запускаем потоки
Код:
Код:
|
04.08.2015, 12:29 | #5 |
Пользователь
Регистрация: 26.07.2015
Сообщений: 59
|
|
04.08.2015, 12:41 | #6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Код:
Если поток открыт, здесь уже ничего сделать нельзя. Либо пиши в него, либо закрываЙ. Да, несколько потоков, можно открыть, но речь наверное, об одном?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
04.08.2015, 12:51 | #7 | |
Пользователь
Регистрация: 26.07.2015
Сообщений: 59
|
Цитата:
|
|
04.08.2015, 13:00 | #8 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Давай так. Мои шутки, они и есть - шутки. Но, если по-серьёзному. Можно открыть, хоть 100500 потоков. Вопрос: нужны-ли они? Я обхожусь двумя-тремя. Над четвёртым уже задумываюсь "а нахрен он нужен". Действительно, оказавается и нахрен не нужен.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
04.08.2015, 13:02 | #9 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Не надо Exit внутри except...end: прокатить - прокатит, но может породить плавающую ошибку. Лет 100500 назад читал где-то и запомнил.
FreeOnTerminate гарантирует освобождение памяти только из-под самого объекта. Если он в процессе работы наклянчил у системы ещё какую-то память, то он должен отдать её при разрушении - например в деструкторе. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
04.08.2015, 14:04 | #10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
2-ое) поток спит во время передачи. ТС, как сказали выше ваш поток должен сам за собою подчищать, а ему для этого события не нужны. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 04.08.2015 в 14:07. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Освобождение памяти | Smolya | Общие вопросы C/C++ | 4 | 23.02.2015 19:38 |
Освобождение памяти | SAMOUCHKA | Общие вопросы по Java, Java SE, Kotlin | 7 | 26.01.2014 21:24 |
Освобождение памяти | millepetrozza | Общие вопросы C/C++ | 4 | 27.10.2012 15:13 |
Освобождение памяти | PUH | Помощь студентам | 1 | 22.11.2009 17:14 |
Освобождение памяти | VadEr | Общие вопросы Delphi | 2 | 17.04.2009 22:23 |