![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Проблема: память процесса растет по неизвестной причине.
Вот пример: Вызов этого кода грузит память на 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; Код:
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
|
||||
|
||||
![]() Ну типа Ап
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
![]() ставьте EurekaLog, включите в ней отлов утечек памяти, и ловите их, говорите спасибо)
|
#4
|
||||
|
||||
![]() Настроил все как в туториале, утечек не ловит...
jmp $ ; Happy End! The Cake Is A Lie. |