比如我定义了这么一个变量:iDataCode: array of integer; 在程序中我使用了SetLength(iDataCode,10); 请问在程序结束时我是否应该存放这段内存、如果我连续不断地调用这个SetLength(iDataCode,10);是不是会内存溢出;另外在线程执行过程调用了ShowMessage,然后去拖动这个弹出的窗口是否会报错

解决方案 »

  1.   

    var
      iDataCode: array of integer;procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      SetLength(iDataCode, 1000);
      for I := 0 to 999 do
      begin
        iDataCode[I].Name := i;
       end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      SetLength(iDataCode, 0);
    end;//这样就OK 了
      

  2.   

    >>是不是会内存溢出;
    不會的, 而且, 過了作用域, 系統會自動釋放的, 我的理解!>>另外在线程执行过程调用了ShowMessage,然后去拖动这个弹出的窗口是否会报错
    不會
      

  3.   

    1、 对于没有使用Create或用getMem等分配内存的变量或对象,不用自己释放。
       系统内部支持的对象由系统自动释放,如String2、一般不会。 但使用showMessage有些限制,好像是创建窗体时,在delphi3从入门到精通中看到的,忘了。
      

  4.   

    SetLength是自动管理的。不用释放吧
    所以就不会抱错了。