Потоки и утечка памяти
Создаю поток, который активно работает с VCL. Если он сам заканчивает работу, тогда всё ОК, но если я его насильно закрываю функцией TerminateThread(), тогда происходят утечки памяти. В потоке указателей не использую вообще(Кроме работ с VCL, типа Form1->Caption и т.д.). Подскажите, что делать ?
Цитата:
Originally posted by madjahed
Создаю поток, который активно работает с VCL. Если он сам заканчивает работу, тогда всё ОК, но если я его насильно закрываю функцией TerminateThread(), тогда происходят утечки памяти. В потоке указателей не использую вообще(Кроме работ с VCL, типа Form1->Caption и т.д.). Подскажите, что делать ?
Создаю поток, который активно работает с VCL. Если он сам заканчивает работу, тогда всё ОК, но если я его насильно закрываю функцией TerminateThread(), тогда происходят утечки памяти. В потоке указателей не использую вообще(Кроме работ с VCL, типа Form1->Caption и т.д.). Подскажите, что делать ?
А обязательно убивать его TerminateThread? Это, знаешь ли не слишком хорошо.
Цитата:
Originally posted by wanja
А обязательно убивать его TerminateThread? Это, знаешь ли не слишком хорошо.
А обязательно убивать его TerminateThread? Это, знаешь ли не слишком хорошо.
Вообще-то в Винде есть стандартная процедура ExitThread. Только ХЗ, как это будет работать с VCL - самому пользовать не приходилось.
Цитата:
Originally posted by madjahed
Создаю поток, который активно работает с VCL. Если он сам заканчивает работу, тогда всё ОК, но если я его насильно закрываю функцией TerminateThread(), тогда происходят утечки памяти. В потоке указателей не использую вообще(Кроме работ с VCL, типа Form1->Caption и т.д.). Подскажите, что делать ?
Создаю поток, который активно работает с VCL. Если он сам заканчивает работу, тогда всё ОК, но если я его насильно закрываю функцией TerminateThread(), тогда происходят утечки памяти. В потоке указателей не использую вообще(Кроме работ с VCL, типа Form1->Caption и т.д.). Подскажите, что делать ?
И это не удивительно, объекты VCL всегда создаются динамически. При убиении процесса в непредсказуемых местах, вам необходимо предусмотреть код зачистки.