一个动态数组 元素为类TXX 删除元素的时候是先FREE还是先将动态数组长度减一 
先将动态数组长度减一了 那么那个对象还存在吗 先FREE了动态数组长度有无变化?

解决方案 »

  1.   

     一定是先FREE 數組 長度不會變化。 
    procedure TForm1.Button1Click(Sender: TObject);
    var
      lab : array of Tlabel;
      i : integer;
    begin
      setlength(lab,6);
      for I := 0 to 6 do
      begin
        lab[i] := TLabel.Create(nil);
      end;
      for I := 0 to 6 do
      FreeAndNil(lab[i]);  setlength(lab,0);end;
      

  2.   


    你这段代码有两处明显的错误
    1. i的范围应该是0到5
    2. FreeAndNil这一句, 循环应该是for i := 5 downto 0 do
      

  3.   

    数组中存储的只是对象指针而已,对象的实例还需要手工Free的。
    参考TList
      

  4.   

    那個數組長度剛開始寫的是  array[0..?] of Tlabel 後來看樓主意思是動態的,所以可能寫的時候沒注意,抱歉