2010-08-14 64 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