我正在使用Apache的TWebModule。我遇到内存泄漏问题。在下面的代码中没有释放 ImageStream 内存泄漏?如果我释放它,我会收到访问冲突。
procedure TWebModule1.WebModule1WebActionItem8Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
RecNo: Integer;
ImageStream: TmemoryStream;
begin
RecNo := StrToInt(Request.QueryFields.Values['RecNo']);
Master.MoveBy(RecNo - Master.RecNo); // go to right record
ImageStream := TMemoryStream.Create;
with TGraphicField.Create(Master) do
try
FieldName := 'Graphic';
SaveToStream(ImageStream)
finally
Free
end;
ImageStream.Position := 0; // reset ImageStream
Response.ContentType := 'image/jpg';
Response.ContentStream := ImageStream;
Response.SendResponse
end;
答案 0 :(得分:4)
来自here:
如果您使用ContentStream属性, 不要自己释放流。该 Web响应对象自动生成 为你释放它。
话虽如此,为什么要涉及ImageStream呢?为什么不直接使用:
Response.ContentStream := TMemoryStream.Create
并将图像直接保存到该流?