天 天空4567 Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-31 #1 1、如何定义一个动态数组? 2、在数组大小值确认后,以此为参数,再如何将 原来的定义的动态数组确定下来?
汾 汾阳仲王 Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-31 #3 1。定义动态数组: array of 数据类型 例如 www: array of Word; 2.自己分配空间使用就可以了 比如用GetMem, FreeMem
J Johnny_du Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-31 #6 var intAry: Array of Integer; intLength: Integer; begin intLength := SomeLength; //SomeLength为动态获取的数组长度 SetLength(intAry,intLength); try ...//使用数组 finally intAry := nil; //释放数组 end; end;
var intAry: Array of Integer; intLength: Integer; begin intLength := SomeLength; //SomeLength为动态获取的数组长度 SetLength(intAry,intLength); try ...//使用数组 finally intAry := nil; //释放数组 end; end;
天 天空4567 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-01 #7 当数组不为空时,intAry := nil;也可以释放数组吗?
S sunnyfairy Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-01 #8 如果你是GetMem,那么你就FreeMem; 如果你是New,那么你就Dispose; 如果你是SetLength,那么你就Setlength(0),或:=nil,或不管。 ... BTW: 动态数组不需要显式释放(如果数组中的项是指针, 那么指向的内容需要自己释放), Delphi会自动释放。
如果你是GetMem,那么你就FreeMem; 如果你是New,那么你就Dispose; 如果你是SetLength,那么你就Setlength(0),或:=nil,或不管。 ... BTW: 动态数组不需要显式释放(如果数组中的项是指针, 那么指向的内容需要自己释放), Delphi会自动释放。
J Johnny_du Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-01 #9 动态数组是生存期自管理的,所以在用完它们以后没有必要释放,因为在离开作用域时它们会被释放。然而,可能在离开作用域前,就需要删除动态数组(例如它们占用了过多的内存)。要这么做,仅需要把nil赋值给动态数组既可!
动态数组是生存期自管理的,所以在用完它们以后没有必要释放,因为在离开作用域时它们会被释放。然而,可能在离开作用域前,就需要删除动态数组(例如它们占用了过多的内存)。要这么做,仅需要把nil赋值给动态数组既可!
天 天空4567 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-01 #10 如果,在离开作用域前,还需要被反复利用,可每此使用的数组大小都会改变。 怎么做比较合适呢? 是每次使用前再赋其大小,并在每次使用完时:=nil(在此之前需要删除已经 填入的数据吗?)
S SupermanTm Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-22 #11 高效的方法是先给它分配大的,用个变量去表示当前真正有效的数据的项数。