经常使用TreeView控件,一直都没有注意到结点的DATA的内存释放问题,因为虽然经常用,但是有时候data就是一个ID值,有时候是一个结构指针,而用指针是需要new的,想着delphi会自动释放的(好像也有人这么说)。
其实,一直以来都是错误的呀,因我最近用了检测内存泄漏的工具才发现,真笨呀。释放此指针也很简单,在TreeView的OnDelction事件中写代码:
- procedure TfrmAuthDefine.tv_authDeletion(Sender: TObject; Node: TTreeNode);
- var
- p :pTdomain; //结构指针
- begin
- inherited;
- if NOde.Data <> nil then
- begin
- p := pTdomain(Node.Data);
- Dispose(p);
- end;
- end;
这样在窗口关闭的时候执行itm.clear,该代码就会把所有内存都释放了。