S
sxwy
Unregistered / Unconfirmed
GUEST, unregistred user!
以下是一个返回类型为BMP的函数
Function Tform1.Resultbmp():Tbitmap;
Var Tmpbmp:Tbitmap;
begin
Tmpbmp:=Tbitmap.Create ;
Tmpbmp.Canvas.Brush.Color :=Clblack;
Tmpbmp.Canvas.FillRect(Tmpbmp.Canvas.ClipRect );
Tmpbmp.Canvas.Font.Color :=Clred;
Tmpbmp.Width :=128;
Tmpbmp.Height :=64;
Tmpbmp.Canvas.TextOut(0,0,'测试BMP');
Result:=Tmpbmp; //返回BMP
Tmpbmp.Free ; //释放BMP
end;
但用下同的方法调用会出错.主要就是上面的函数里加了TMPBMP.FREE,上面不加TMPBMP.FREE就不会出错.
但是如果不加TMPBMP.FREE的话,那么实际上调后RESULTBMP
函数之后,在内存里的一个TMPBMP的空间是没有释放的.
那么有没有办法释放这种函数所产生的内存空间呢.
请帮一下忙,谢谢.
以下是调用过程.
Var TTT:Tbitmap;
Ttt:=Tbitmap.Create ;
Ttt:=Resultbmp(); //调用函数
TTT.REEE;
以前我就出现过这样的错误,如果在RESULTBM函数不加Tmpbmp.free,那么被调用N次后,就会出现计算机内存不足的原因.而且每调用一次,都可以看到计算机的内存在减少.
但如果加了tmpbmp.free呢,却又无法正确的返回BMP图像.
Function Tform1.Resultbmp():Tbitmap;
Var Tmpbmp:Tbitmap;
begin
Tmpbmp:=Tbitmap.Create ;
Tmpbmp.Canvas.Brush.Color :=Clblack;
Tmpbmp.Canvas.FillRect(Tmpbmp.Canvas.ClipRect );
Tmpbmp.Canvas.Font.Color :=Clred;
Tmpbmp.Width :=128;
Tmpbmp.Height :=64;
Tmpbmp.Canvas.TextOut(0,0,'测试BMP');
Result:=Tmpbmp; //返回BMP
Tmpbmp.Free ; //释放BMP
end;
但用下同的方法调用会出错.主要就是上面的函数里加了TMPBMP.FREE,上面不加TMPBMP.FREE就不会出错.
但是如果不加TMPBMP.FREE的话,那么实际上调后RESULTBMP
函数之后,在内存里的一个TMPBMP的空间是没有释放的.
那么有没有办法释放这种函数所产生的内存空间呢.
请帮一下忙,谢谢.
以下是调用过程.
Var TTT:Tbitmap;
Ttt:=Tbitmap.Create ;
Ttt:=Resultbmp(); //调用函数
TTT.REEE;
以前我就出现过这样的错误,如果在RESULTBM函数不加Tmpbmp.free,那么被调用N次后,就会出现计算机内存不足的原因.而且每调用一次,都可以看到计算机的内存在减少.
但如果加了tmpbmp.free呢,却又无法正确的返回BMP图像.