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 распределяется память под временные структуры данных, которая потом не освобождается. Утечка памяти при загрузке XML-файла в TClientDataSet происходит из-за особенностей работы COM-объектов в midas.dll, которые используются ClientDataSet для разбора файла XML и оставляют часть памяти неосвобоженной. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |