|
|
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
Добавили Код: pascal 1. в project1.drp, чтобы при выключении давал сообщения об утечке памяти Вот при выключении программы начал давать сообщение: Код: pascal 1. 2. Добавил для исключения утечки в конце Код: pascal 1. 2. 3. 4. После этого добавления, после закрытия приложения, приложение исчезает на экране и уходит как фоновый процесс не закрываясь, что мешает открыть его в следующий раз. Здесь Код: pascal 1. создаётся в TFrmMain.FormCreate Код: pascal 1. TEventWaitThread это класс TThread. Чтобы приложение не уходило в фоновый процесс и закрывалось, убрал Код: pascal 1. и добавил в конце Код: pascal 1. 2. 3. тогда всё нормально и сообщений об утечки нет, и приложение закрывается. Возник вопрос: не будет ли ExitProcess(0); подавлять необходимые сообщения об утечке памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 12:03 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAry, важно исходить из простого: ExitProcess, Application.Terminate, Halt в любом месте кода вызывается в особых случаях. скорее всего это не твои случаи. лучше не заниматься программированием методом псевдонаучного тыка, а точно разобраться, что где не так. если что, место утечек тебе помогут найти: FastMM (FullDebugMode), EurekaLog, Mad Except. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 12:18 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
makhaon, FastMM (FullDebugMode) как раз и дал сообщение: Код: pascal 1. 2. Как ликвидировать утечку памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 12:28 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAry, очевидно, что нужно разрушить TEventWaitThread :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 12:35 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
makhaon, как правильно разрушить TEventWaitThread? Вот было написано до меня: Код: pascal 1. 2. потом Код: pascal 1. 2. 3. потом Код: pascal 1. 2. 3. и в Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 12:44 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
А Thread.Free; где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2018, 13:38 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
rgreat, в *.dpr файле проекта на последних строчках Код: pascal 1. 2. 3. 4. в uEventWaitThread.pas вот эта FreeEven процедура для завершения Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и всё, т.е. получается для завершения не используется Thread.Free, используется Thread.Terminate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 08:37 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
Thread.Terminate не делает Thread.Free. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 11:33 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
rgreat, вместо Thread.Free делает это Код: pascal 1. из Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 12:05 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
Ты уверен что у тебя Thread.Terminate приводит к завершению потока до закрытия приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 16:44 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAry, А если ради эксперимента сделать так? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 18:56 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
rgreat, 'Ты уверен что у тебя Thread.Terminate приводит к завершению потока до закрытия приложения?' не знаю, разве не завершает поток до закрытия приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 06:18 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
alekcvp, Not used. XE6 help: Currently, the WaitFor method is not used. It will always return wrError. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 06:23 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAryне знаю, разве не завершает поток до закрытия приложения?Он только вешает на тред флажок что пришла команда на его закрытие. Этот флажок еще надо вручную в треде обработать и "штатно" заврешить тред. Раз ты этого сам не делаешь значит тред у тебя и не останавливается и не освобождается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 06:26 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAryalekcvp, Not used. XE6 help: Currently, the WaitFor method is not used. It will always return wrError. Тогда: WaitForSingleObject(Thread.Handle, INFINITE); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 06:28 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
rgreat, попробовал WaitForSingleObject(Thread.Handle, INFINITE); не помогло, всё та же инфа от FastMM при закрытии об утечке памяти/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 06:31 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
rgreat, как и где сделать?: "Этот флажок еще надо вручную в треде обработать и "штатно" заврешить тред." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 06:32 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAry, Читайте букварь. Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 06:55 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
rgreat, и что здесь не так?: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 07:08 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
Отладку вам в руки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 07:35 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAry, примитивнейший же случай. отладчик бери и смотри :) там всё просто замечательно видно будет. уже позавчера бы всё сделал, ну реально 20 строк кода же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 13:39 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
Не вижу никаких утечек, кроме кривых рук ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 14:08 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
А чем обусловлена любовь к Winapi и OpenEvent вместо TEvent или TLightweightEvent ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 16:02 |
|
||
|
Чтобы при выключении давал сообщения об утечке памяти включили ReportMemoryLeaksOnShutdown
|
|||
|---|---|---|---|
|
#18+
AdamAryи что здесь не так?:Вызов Thread.Terminate установит свойству Terminated значение True. И все. Никакого завершения потока не произойдет. Вы в потоке должны сами проверять значения свойства Terminated и завершать поток. Вы проверяете. Но только после выхода из функции WaitForSingleObject. Т.е. вам нужно еще и разбудить поток. С учетом того, что у вас установлено FreeOnTerminate = True это может оказаться не так просто, если объект CommandEvent уничтожается в деструкторе этого потока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 16:35 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39735124&tid=2040104]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 477ms |

| 0 / 0 |
