Проблема: память процесса растет по неизвестной причине.
Вот пример:
Вызов этого кода грузит память на 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кб.
В чём дело? Как это убрать?
Очень прошу вас помочь.