2010-08-14 62 views
3

我在Apache上使用TWebModule。我遇到内存泄漏问题。在下面的代码是不是免费的ImageStream内存泄漏?如果我释放它,我会遇到访问冲突。是不是释放TMemoryStream导致内存泄漏?

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; 

回答

4

here

如果使用ContentStream属性, 不要释放自己的流。该 网络响应对象自动 释放它。

说了这么多,为什么涉及的ImageStream呢?为什么不只是使用:

Response.ContentStream := TMemoryStream.Create 

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

+0

谢谢 - 我有点预计是答案。我也会利用你的想法。我的内存泄漏必须在别的地方! – 2010-08-14 15:26:18