数组定义的2个小问题(20分)

  • 主题发起人 主题发起人 天空4567
  • 开始时间 开始时间

天空4567

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