Threads
Проблема такая: создаю новый класс Thread, свойство FreeOnTerminate = true. Создаю через new все как положено, но когда вызываю Terminate, то этот объект почему то не особождает память (указатель на него после вызова Terminate не равен NULL, а при вызове любых методов не происходит исключения)... так вот, в связи с чем это происходит? Получается что память реально не освобождается этим потоком?
Цитата:
Originally posted by Sergun
Проблема такая: создаю новый класс Thread, свойство FreeOnTerminate = true. Создаю через new все как положено, но когда вызываю Terminate, то этот объект почему то не особождает память (указатель на него после вызова Terminate не равен NULL, а при вызове любых методов не происходит исключения)... так вот, в связи с чем это происходит? Получается что память реально не освобождается этим потоком?
Проблема такая: создаю новый класс Thread, свойство FreeOnTerminate = true. Создаю через new все как положено, но когда вызываю Terminate, то этот объект почему то не особождает память (указатель на него после вызова Terminate не равен NULL, а при вызове любых методов не происходит исключения)... так вот, в связи с чем это происходит? Получается что память реально не освобождается этим потоком?
Вообще у Борланда своя собственная подсистема работы с динамической памятью. И этот эффект встречается не только при работе с потоками, но и при создании/удалении форм. Я дкмаю они малость недоработали и это просто ошибка. Т.Е. у себя внутри она помечена как свободная, но реально не почищена. А может нужно тривиальный delete сделать. Хотя думаю результат будет тот-же. Приложение при создании захватывает себе сразу кусок памяти у ОС и освобождает его только после свего закрытия. А в се операции с new и delete проводит внутри этой своей кучи.