关闭

Dispose与内存泄漏

1014人阅读 评论(0) 收藏 举报

windows任务管理器检查,以及MemProf檢查,發現Dispose函数必须传入特定的类型才能完全释放,不能简单的使用pointer来释放。

如:

PrecordEntity=^TRecordEntity;

TrecordEntity=record

  ID:integer;

Name:string;

End;

Procedure Tform1.Button1Click(Sender:Tobject);

Var

  vEntity:PrecordEntity;

Begin

  New(vEntity);

  TreeView1.Add.Data:=vEntity;

 

End;

Procedure Tform1.Form1Destroy(Sender:Tobject);

Var

  I:integer;

Begin

  For i:=0 to TreeView1.Items.Count-1 do

    Dispose(TreeView1.Items[i].Data);

End;

红色的地方必须改为Dispose(PRecordEntity(TreeView1.Items[i].Data));

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:333711次
    • 积分:4969
    • 等级:
    • 排名:第5889名
    • 原创:150篇
    • 转载:46篇
    • 译文:0篇
    • 评论:76条
    最新评论