首页 > 其他 > 详细

记录类型中String的释放

时间:2014-03-15 14:47:54      阅读:398      评论:0      收藏:0      [点我收藏+]

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

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

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

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

bubuko.com,布布扣
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;  
bubuko.com,布布扣

记录类型中String的释放,布布扣,bubuko.com

记录类型中String的释放

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

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