![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
TClientDataSet. Утечка памяти при загрузке XMLDelphi , Базы данных , Ошибки БДTClientDataSet. Утечка памяти при загрузке XMLАвтор: Sergei Romancha Hапpимеp, если делаем:
то видим, что память выделилась, но не освободилась. Если даже делать ClientDataSet.Create и ClientDataSet.Free то все pавно будут утечки. Пpобовал также пеpед закpытием:
Все pавно не помогает. Решения не нашел. Тестировал под D5 под W2000, W98. Также брал midas.dll от D6. Проблема осталась. КОММЕНТАРИЙ Действительно, проверка показывает, что при загрузке данных из XML-файла последующее закрытие ClientDataSet не освобождает часть выделенной памяти. Трассировка VCL не выявила ничего подозрительного в открытом коде TClientDataSet. Но часть операций производится COM-объектами, которыми пользуется ClientDataSet и которые находятся в midas.dll. Установлено, что утечка памяти отсутствует, если данные в ClientDataSet поступают через провайдера, либо при загрузке из файла формата CDS (в котором ClientDataSet сохраняет данные по-умолчанию). Следовательно, мы имеем проблему при локальном использовании ClientDataSet с файлом XML. Вероятно, в midas.dll при разборке файла XML распределяется память под временные структуры данных, которая потом не освобождается. Статья TClientDataSet. Утечка памяти при загрузке XML раздела Базы данных Ошибки БД может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 ![]() |