|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.03.2021, 13:44 | #1 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 19
|
Утечка памяти в потоках + указатели.
Добрый день.
Дано: Описание типов: Код:
Код:
Код:
Код:
Дополнительно: Если в дополнительных потоках устанавливаю очищаю указатель "Dispose(PErrorsLog);" на массив, то почему то переменная в управляющем потоке становится пустой?
О_о
Последний раз редактировалось Masam; 25.03.2021 в 16:35. |
25.03.2021, 15:24 | #2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
поэтому просто Код:
Код:
и теперь никаких здесь Dispose; передавать можно как угодно ЕСЛИ заполнять в критической секцией. есть хорошее правило удалять должен тот кто создавал. т.е. управляющий поток. и тогда когда она ему больше не нужна.
программа — запись алгоритма на языке понятном транслятору
|
|
25.03.2021, 16:33 | #3 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 19
|
Спасибо большое за ответ.
Тогда у меня еще ряд вопросов: 1) Имеет ли место тут утечка памяти или это такое поведение менеджера памяти? К примеру я создаю отдельную кнопку: Код:
2) Если я у рабочего потока создам дополнительные поля "массивы / объекты", нужно ли их очищать по завершению потока и достаточно ли будет из управляющего потока просто выполнить "Tests[i].Free;", не будет ли в данном случае утечки памяти? Пример: Код:
О_о
|
25.03.2021, 16:56 | #4 | |||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
CriticalSection:TCriticalSection - следует создавать глобально, а не в объекте. Она патчит код и при деструкторе восстанавливает, то что там было. Цитата:
Цитата:
Вместо суспендит и ресуме вам надо будет менять в своем коде приоритет ThreadMain.Priority В данном примере это не критично. Просто на будщее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|||
25.03.2021, 16:59 | #5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Это нормально строки для memo1 отпочковались(инстацирповались) и записались на верх кучи. А вы освободили те что посерёдке.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
25.03.2021, 17:01 | #6 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Утечки следует смотреть в EurekaLog или madExcept или аналогичной программе.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 25.03.2021 в 17:48. |
25.03.2021, 17:32 | #7 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
А вот объекты и динамическая переменные сколько раз их создал столько и надо удалить. Колличество конструкторов должно уравнять колличество деструкиеров. Free в переводе очистка. Она вызывает деструкторы и тот сам подчищает переменные управляемого рода такие как строки и динамические массивы. Ещё раз повторю где память выделили в том объекте и освобождаете. Так ошибки проще искать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
04.04.2021, 15:31 | #8 | |
Пользователь
Регистрация: 19.11.2009
Сообщений: 19
|
Цитата:
В указанном примере у меня не отработало заполнение общего массива в рабочем потоке, а изначально указанный через указатели - работает.
О_о
|
|
04.04.2021, 15:33 | #9 |
Пользователь
Регистрация: 19.11.2009
Сообщений: 19
|
Спасибо за ответ. Очень полезно.
О_о
|
04.04.2021, 15:39 | #10 | |
Пользователь
Регистрация: 19.11.2009
Сообщений: 19
|
Цитата:
А по приоритетам не понял, судя по описанию самого низкого приоритета, поток продолжает работать, мне же важно что бы выполнение цикла приостанавливалось: Код:
О_о
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Утечка памяти [Освобождение памяти массива] | denis76560 | Общие вопросы Delphi | 4 | 27.11.2016 18:20 |
Утечка памяти | OmegaBerkut | Общие вопросы Delphi | 21 | 09.04.2015 22:12 |
Утечка памяти :( | batnik.com | C++ Builder | 1 | 09.05.2013 18:09 |
Утечка памяти | Juffin | Общие вопросы Delphi | 3 | 02.11.2010 12:11 |
Утечка памяти | ZvEr_HaCkEr | Свободное общение | 13 | 24.09.2010 19:30 |