我做了一个试验,初始化combobox代码如下:
var
i: integer;
p: pstring;
begin
for i:=0 to 100 do
begin
new(p);
p^ := inttostr(i);
combobox.Items.AddObject(inttostr(i),TObject(p^));
end;但通过测试发现上面代码造成201处内存泄漏,最终我该怎样释放combobox中的object属性?
var
i: integer;
p: pstring;
begin
for i:=0 to 100 do
begin
new(p);
p^ := inttostr(i);
combobox.Items.AddObject(inttostr(i),TObject(p^));
end;但通过测试发现上面代码造成201处内存泄漏,最终我该怎样释放combobox中的object属性?
解决方案 »
- 字符串解析的问题,我该如何解析字符串中的表达式并求值?
- delphi 文件流中查找字符串
- 无法定位程序输入点safgarrayaccessdata于动态链接库oleaut32.dll上
- Delphi DBGrid 排序 特别简单
- 我在delphi7中找不到TNMSMTP,在哪里啊,请大家帮帮忙
- 图标提取和打包问题!
- 如何动态建立数据表(Access)??
- 没人能帮我吗?表的快速查找问题(只有10分了!千万别介意,帮帮小妹吧)在线等待!!!
- [紧急]还是sql问题,关于日期类型的between...and问题~~
- 我用setwindowlong使我的应用程序在任务栏隐藏,为什么它最小化出了问题?
- 如何把多张BITMAP放到资源文件并且调用?
- 请教IBX连接数据库,如何捕获错误。
要Dispose
或者使用:
GetMem()
FreeMem();资源泄露就是new(p)后没有释放。
而是你使用了指针,而且new了,同时你还没有释放指针资源,所以内存泄露。
否则string(combobox.Items.Objects[combobox.ItemIndex])将得不到Object的值。
但我不知道cobbobox.items.clear会不会将new的内存释放。好像不能,但我该怎么释放?