首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

动态创建组件后一定要Free吗? 请详细说下,多谢.

2012-04-06 
动态创建组件后一定要Free吗? 请详细说下,谢谢......``````````动态创建组件后一定要free吗?我是在线程里

动态创建组件后一定要Free吗? 请详细说下,谢谢......``````````
动态创建组件后一定要free吗?

我是在线程里动态创建IDHTTP

这个IDHTTP每10秒都会工作一次,

难道每次create 之后 都要 free 那不是很纠结?

难道不能create之后就一直用idhttp.get,不用去free?


我用管理器和冰刃看了一下加free和不加free没什么区别呀?内存也不会增加什么的.




[解决办法]
这个是关于变量的生命周期,如果你在函数体中声明的变量,在函数结束的时候一定要释放,否则就会造成内存泄漏,如果你是类中声明的变量,则可以在类销毁的时候再销毁,你可以在类中方法多次用。
[解决办法]
这样创建
Fidhttp1 := tidhttp.Create(nil);
必须要Free

Fidhttp1 := tidhttp.Create(sef);

Fidhttp1 := tidhttp.Create(Application);
则不需要Free,因为它会随窗口或工程的释放而自动释放。




[解决办法]
把Idhttp 申明为你定义的线程地 成员,然后在你线程创建地地方初始化, 线程销毁的时候释放
这样你就不用去管了.............
[解决办法]
var Fidhttp1:tidhttp;
begin
Fidhttp1 := tidhttp.Create(nil);
for i:=0 to 50 do
begin
sleep(10000);
Memo1.Text := Fidhttp1.Get('http://tieba.baidu.com');
end;
Fidhttp1.Free; //循环结束后在free
end;
这样写是可以的

Fidhttp1 := tidhttp.Create(Application); 
这样的好处是你创建后 TApplication 中会增加一个tidhttp指针帮你销毁 所以可以不用Fidhttp1.Free;
 但我们编程的都喜欢自立更生的 所以有创建就有销毁么 关键是在什么时候创建 什么时候销毁
  

热点排行