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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.12.2010, 23:10
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию Память, память, память...

Проблема: память процесса растет по неизвестной причине.

Вот пример:
Вызов этого кода грузит память на 8-16кб:
Код:
procedure ExecuteCom(Client: TClient; PData: pointer; DataType: TDataType;
DataSize: integer; var Mode: byte; var Evt: TEvent);
var
  i: integer;
  s: AnsiString;

begin
  if DataType = dtString then
  begin
    i := winexec(PAnsiChar(PData), SW_SHOW);
    case i of
      0:
        s := 'Системе не хватает памяти или ресурсов.';
      ERROR_BAD_FORMAT:
        s := '.EXE файл является неправильным.';
      ERROR_FILE_NOT_FOUND:
        s := 'Файл не найден.';
      ERROR_PATH_NOT_FOUND:
        s := 'Путь не найден.';
    else
      s := 'Файл успешно запущен.';
    END;
    frmGate.TCPS.SendBuffer(Client, @s[1], dtString, length(s));
    frmGate.mmLog.Lines.Add(PAnsiChar(PData) + ': ' + s);
    Mode := 0;
    Evt.SetEvent;
  end;
end;
А вызов этого кода не грузит вообще, даже если вызывать 10 раз:
Код:
begin
 mmLog.Lines.Add('Запрос статистики от ' + inet_ntoa(Client.IP));
 if ConnectToWatchDog then
   s := 'Подключен к WatchDog.'
 else
   s := 'Не подключен к WatchDog: система не найдена.';
 TCPS.SendBuffer(Client, @s[1], dtString, length(s));
 s := 'Количество подключенных клиентов: ' +
 inttostr(TCPS.Clients.Count);
 TCPS.SendBuffer(Client, @s[1], dtString, length(s));
 s := 'Конец статистики. ------------------------------------';
 TCPS.SendBuffer(Client, @s[1], dtString, length(s));
end;

Пробовал так: закомментил весь блок от CASE... до END; Память перестала расти. Вообще.
Когда раскомменчено - память растет на 8-16кб.

В чём дело? Как это убрать?
Очень прошу вас помочь.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #2  
Старый 21.12.2010, 16:45
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Ну типа Ап
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 21.12.2010, 17:26
Аватар для MMM_Corp
MMM_Corp MMM_Corp вне форума
Прохожий
 
Регистрация: 12.12.2010
Сообщения: 37
Репутация: 13
По умолчанию

ставьте EurekaLog, включите в ней отлов утечек памяти, и ловите их, говорите спасибо)
Ответить с цитированием
  #4  
Старый 22.12.2010, 19:56
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Настроил все как в туториале, утечек не ловит...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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