Я использую базовый сервер DataSnap. Я использую X Е8, окно 8.1Функция Delphi DataSnap, возвращающая TStream и утечку памяти
У меня есть следующая функция сервера:
function TSrvServerMetodos.ImagePac(pront:integer): TStream;
var blob:TStream;
strm:TMemoryStream;
begin
with qrytemp do begin
Params.Clear;
SQL.Clear;
SQL.Add('SELECT F.PICTURE FROM CLIENTES F WHERE F.PRONT=:pront');
UnPrepare;
Prepare;
Params[0].Value:=pront;
Open;
if IsEmpty then result:=nil
else begin
try
Result := CreateBlobStream(fieldbyname('pict'),bmRead);
GetInvocationMetadata.ResponseContentType := 'image/jpeg';
except
Result:=nil
end;
end;
end;
end;
Мой клиент приложение является Android приложения. Все работает хорошо, и я могу получить работу.
Мое сомнение касается утечки памяти на сервере Datasnap.
Поскольку результат - это TStream, который я создал, сервер Datasnap позаботится о его освобождении или у меня будут проблемы с утечкой памяти?
Как сервер знал, будет ли и когда освобождать поток? – MartynA
@MartynA Это сервер DataSnap с жизненным циклом вызова. Вы также спрашиваете, что я хочу знать. –
Извините, мой q был немного риторическим. Как * может * сервер, возможно, «знает», какие распределения кучи были сделаны в рутине, не говоря уже об их уничтожении? – MartynA