我想是这样的吧,放在public区时因为公共申明,故在关闭时不能自动释放,
改为在单元的var MainForm:TForm 后面,则窗体结束时会默认释放.
所以会发生你出现的错误了

解决方案 »

  1.   

    检查有没有指针越界,对于静态数组可以生存期自动管理内存,但是动态数组在关闭窗体前是要释放空间的。可以用如下语句:A:=NIL;
                                                B:=NIL;
      

  2.   

    动态数组要释放空间,如:A:=Nil;
    或者可能是数组越界。
      

  3.   

    我测了一下,好像没有你所说的问题,你可以查一下,是不是别的问题。
    动态数组在DELPHI里是生存期自管理的,离开作用域时会自己释放。
      

  4.   

    动态数组是自己管理内存的;如果你申请的是基本类型的数组,应该是没有问题的,问题出在别处;
    如果数组中的元素是由create创建的,很有可能出错!
      

  5.   

    肯定是其他问题,我这里试了一下,没有问题啊
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
          aints : array of integer;
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
       SetLength(aints,10);
       aints[1] :=5;
    end;end.
      

  6.   

    肯定是其他问题,我这里试了一下,没有问题啊
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
          aints : array of integer;
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
       SetLength(aints,10);
       aints[1] :=5;
    end;end.
      

  7.   

    肯定是其他问题,我这里试了一下,没有问题啊
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
          aints : array of integer;
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
       SetLength(aints,10);
       aints[1] :=5;
    end;end.
      

  8.   

    非常感谢大家的帮忙,我又仔细的检查了代码,还真是动态数组出现了越界访问,问题解决了,送分!---mattus_zhao