码迷,mamicode.com
首页 > 其他好文 > 详细

记录类型中String的释放

时间:2016-06-02 06:17:01      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

String能自动释放,在进行内存拷贝时需要进行手动释放。可以直接调用Finalize手工释放

如:TGraphicHideTab 记录中声明的Caption:string

技术分享
TGraphicHideTab = record  
  Image:Integer;  
  Data:Integer;  
  Size:Integer;       /// 绘制时使用的尺寸  
  Caption:string;     /// <--- 记录中有String  
end;  
技术分享

直接内存处理的时候String不会自动处理计数,需要手工处理String。

技术分享
var   
  FItems:array of TGraphicHideTab;  
  FCount:integer;  
  
procedure DeleteItem(AIndex: Integer);  
begin  
  ///   
  ///  使用内存移动的时候String计数不会改变,因此需要手工处理String的计数  
  ///  
  if (AIndex >= 0) and (AIndex < FCount) then  
  begin  
    Finalize(FItems[AIndex]);   // <-- 手工释放Record中的String  
    if AIndex < FCount - 1 then  
      Move(FItems[AIndex + 1], FItems[AIndex], sizeof(TGraphicHideTab) * (FCount - AIndex - 1));  
    dec(FCount);  
  end;  
end;  
技术分享

http://www.cnblogs.com/gleam/p/3600797.html

记录类型中String的释放

标签:

原文地址:http://www.cnblogs.com/findumars/p/5551681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!