首页 > Windows开发 > 详细

Delphi结构中使用String时遇到的内存泄露问题(没有利用String的引用计数自动销毁字符串的功能)

时间:2016-03-18 00:17:39      阅读:516      评论:0      收藏:0      [点我收藏+]

先定义一个结构:

TUserInfo = record
  UserID: Integer; // 用户编号
  UserName: string; // 用户名
end;

 

然后编写如下代码:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  User.UserName := StringOfChar(‘A‘, RandomRange(16*1024, 64*1024));
  FillChar(User, SizeOf(User), 0);
end;

 

然后开启设置Timer间隔为20ms, 开启任务管理器就会发现内存暴涨,很显然结构中UserName使用的内存未被正确释放。

 

改成下面的代码就不会出现上述情况:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  User.UserName := StringOfChar(‘A‘, RandomRange(16*1024, 64*1024));
  User.UserName := ‘‘;
end;

http://blog.csdn.net/missmecn/article/details/7097660

Delphi结构中使用String时遇到的内存泄露问题(没有利用String的引用计数自动销毁字符串的功能)

原文:http://www.cnblogs.com/findumars/p/5290058.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!