Школоло / Говнокод #14109 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
// прога у нас многопоточная, данный код выполняется в потоке. Создание и настройка Idhttp прописана в конструкторе потока.
while not terminated do
    begin
       synchronize(ReadProxy);
        if ThreadExit then break;
        try
           memorystream.Position:=0;
          try
            idHTTP.Get(linknew,memorystream);
            idhttp.disconnect;
          except
            idhttp.Disconnect;
          end;
          finally
            temp:=memorystreamtostring(memorystream); // если этого не сделать, память будет утекать.
            memorystream.clear;
          end;

Я нашел способ предотвратить утечки памяти в Indy, при Get-запросе -
многие грешат на Indy, мол, нестабильная она в потоках, провоцирует утечки.
Оказалось, что дело-то в tmemorystream, я его маму бля ебал!!!

Запостил: Stertor Stertor, (Updated )

Комментарии (5) RSS

  • Насколько я понимаю, иногда из-за глюков Indy возникает исключение, которое не обрабатывается :
    try
               memorystream.Position:=0;
              try
                idHTTP.Get(linknew,memorystream);
                idhttp.disconnect;
              except // исключение не всегда  обрабатывается.
                idhttp.Disconnect;
              end;
              finally
                temp:=memorystreamtostring(memorystream);
                memorystream.clear;
              end;


    но так как освобождение памяти стоит в блоке try...finally, память не забивается. Проверено.
    Ответить
  • Ты ошибался. течёт как раз таки IdHTTP, точнее, модуль IdStack.
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8