type trecord=record  //定义一个类型
   qbfb:string;
   qbc:string;
   qjc:string;
 end; qrecord=array of trecord;   //定义一个动态数组
 var
        //////////////接受数据     qsrecord:qrecord;
          szleng:integer;  {qsresord[]}
    qsbfb:array [1..5]of byte;
    qsbc:array [1..7]of byte;
    qsjc:array [1..7]of byte;
/////给数组付直
for m:=0 to sleng-1 do
          begin
            srecord[m].qbfb:='';
            srecord[m].qbc:='';
            srecord[m].qjc:='';
          end;/////////原来我是将数组的长度设置0,可是这么是不对的。内存并没有释放,
用什么释放内存????????
    请写详细点。。

解决方案 »

  1.   

    SetLength(sRecord,0);这样就可以了。
      

  2.   

    你的动态数组在函数处理过程中声明,当函数处理完毕之后,不就自动释放了吗?
    当然你也可将动态数组变量置为nil.即qsrecord := nil
      

  3.   

    结合楼上的,还有你在释放对象内存空间时,尽量使用FreeAndNil,非常好用
      

  4.   

    看看这个:
    http://www.csdn.net/develop/Read_Article.asp?Id=14964
      

  5.   

    最好用 Finalize(DynamicArray);另外,你是怎么判断“内存并没有释放”的?
      

  6.   

    手动释放方法是:SetLength(sRecord,0);
    正常情况下,动态数组是由系统自动释放的
      

  7.   

    sRecord:=nil 还是sRecord:=null我忘了,试试就知道了
      

  8.   

    Srecord:=Null  执行到这里就是出错了  读地址是 0000000
      

  9.   

    Srecord:=Null  执行到这里就是出错了  读地址是 0000000
    我的程序用到一定时间 3各小时旧会死机了,看看内存管理增大了,,
    SetLength(sRecord,0);
    free怎么用 能写一个代码吗?Finalize(DynamicArray);  可以吗??
      

  10.   

    动态数组是生存期自管理的。
    http://www.csdn.net/develop/Read_Article.asp?Id=14927
    我写的一篇关于数组的东西,有点乱你可以去看看。
    重点看计数器方面的。但是如果是对象数组就要手动释放了。