Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.03.2013, 17:19
Pcrepair
 
Сообщения: n/a
По умолчанию Небольшая утечка памяти с TStringList

Добрый день. Есть код функции:

Код:
function DelParagraph(const Str1,Str2:string; L:integer):string;
var
J,I,Count,D,G:integer;
Word1,Word2: string;
T1,T2:TStringList;
begin
T1:=TStringList.Create;
T2:=TStringList.Create;
T2.Sorted := true;              
T2.Duplicates := dupIgnore;                  
Result:='';
if Length(Str1) = 0 then Exit;
 Count:=0;                                      
   try
      T1.Text:=SpliteText(Del(Str1));          
      G:=(T1.Count);                           
      T2.Text:=SpliteText(Str2);               
      for I := 0 to T2.Count-1 do              
        begin
         Word1:=(T2[i]);                       
          begin
           for J := 0 to T1.Count-1 do         
            begin
             Word2:=(T1[J]);                   
              if CompareWords(Word1,Word2) then
               begin
                Inc(Count);                    
               end;
            end; 
          end;
        end; 
        if (Count = 0) or (G = 0) then         
        Exit
        else
        D:=((Count*100 Div G)); 
        if D > L then
        Result:=Str1;
   finally
      FreeAndNil(T1);
      FreeAndNil(T2);
   end;
end;

Del, SpliteText, CompareWords - вызываемые функции, то же имеют TStringList и везде try-finally-end;
Вызов функции:
FullStr3:=DelParagraph(FullStr2,SWords,L); в общем функция получает две строки1 и 2 и число, сравнивает слова в строках и если число совпадений превышает порог переносит строку1 на выход.

Проблема состоит в том что при завершении программы ReportMemoryLeaksOnShutdown выдает сообщение о небольшой утечке памяти в TStringList
если заблокировать вызов функции, то утечка пропадает

ВОпросы:
1. как вообще можеть быть утечка при наличии try-finally-end вроде бы гарантирующее уничтожение объектов
2. как вообще определить где конкретно это происходит
3. может быть код кривой? тогда где?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:46.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025