代码之家  ›  专栏  ›  技术社区  ›  M Schenkel

释放TMemoryStream不会导致内存泄漏吗?

  •  3
  • M Schenkel  · 技术社区  · 14 年前

    我将TWebModule与Apache一起使用。我有内存泄漏的问题。在下面的代码中没有释放

    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 回复  |  直到 14 年前
        1
  •  4
  •   JimG    14 年前

    here :

    如果使用ContentStream属性, Web响应对象自动

    既然如此,为什么还要涉及ImageStream呢?为什么不直接使用:

    Response.ContentStream := TMemoryStream.Create
    

    直接把图像保存到流中?