Record 类型的变量怎么释放内存空间? var ere:Record ..end;ere.***:=;之后怎么让ere为“空”? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FillChar(ere, SizeOf(ere), #0);————————————————————————————————————宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。———————————————————————————————————— Record 是实在的一个变量,不存在释放,就象 integer, byte 一样。 拿个例子来做说明吧。typeaa = record nI1: Integer; nI2: Integer;end;Paa = ^aa;procedure P1();var aa a1;beginend; 这个时候你的a1 是建立在过程的堆栈里面的,不需要显式的释放。离开这个过程的作用域,这个结构会自动被释放掉。 假如你需要自己控制何时释放,可以这么写:procedure P1();var Paa pA1; // 注意这里声明的是一个指针,不是结构体begin GetMem(pA1, SizeOf(aa)); // 申请一个结构体的内存空间,然后把pA1 指向这个空间。.... FreeMem(pA1); // 释放所申请的空间。end;假如你懂一点C 语言的话,可以把这个做法和malloc 和 free 做内存管理做比较,一样的。 record 和 class 的内存管理不一样的pascal中所有的class变量都是引用,所以在使用完后要释放但是record不是引用,所有使用方法和其他的基本类型都是一样的 老话题,屏幕取词 数值类型转换 如何实现1-10中选择有条件的3个数字?在线等 多线程小问题,急.. (只有60分啊,-_-!) 最简单的问题,真正的送分。关闭窗体用什么? 看到一个同学的代码,每个窗体单元中最后都有一句registyclass([from.name]),有什么用? INTRAWEB编程自动下载! 关于dll问题 Delphi ADO MsSqlServer 隐形事务 还是关于webbrowser的新问题? 如何让报表显示比较长的数据的问题! 帮忙,一条SQL语句问题!解决后马上给分
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
nI1: Integer;
nI2: Integer;
end;Paa = ^aa;
procedure P1();
var
aa a1;
beginend; 这个时候你的a1 是建立在过程的堆栈里面的,不需要显式的释放。离开这个过程的作用域,这个结构会自动被释放掉。 假如你需要自己控制何时释放,可以这么写:procedure P1();
var
Paa pA1; // 注意这里声明的是一个指针,不是结构体
begin
GetMem(pA1, SizeOf(aa)); // 申请一个结构体的内存空间,然后把pA1 指向这个空间。.... FreeMem(pA1); // 释放所申请的空间。
end;假如你懂一点C 语言的话,可以把这个做法和malloc 和 free 做内存管理做比较,一样的。
pascal中所有的class变量都是引用,所以在使用完后要释放
但是record不是引用,所有使用方法和其他的基本类型都是一样的