是不是要释放TMemoryStream导致内存泄漏?

时间:2010-08-14 14:46:57

标签: delphi

我正在使用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;

1 个答案:

答案 0 :(得分:4)

来自here

  

如果您使用ContentStream属性,   不要自己释放流。该   Web响应对象自动生成   为你释放它。

话虽如此,为什么要涉及ImageStream呢?为什么不直接使用:

Response.ContentStream := TMemoryStream.Create

并将图像直接保存到该流?