动态们配了数组,用完了以后没把空间释放,会对电脑的内存有什么影响吗? 要怎么解决下

解决方案 »

  1.   

    这是一个输入N计算   1+(1+2)+(1+2+3)+..+..(1+2+3+...+n)的 哪里错了?procedure TForm1.Button1Click(Sender: TObject);
    var
    i,a,sum,n:integer;
    result:string;
    myarray:array of integer;
     begin
    n:=strtoint(edit1.Text);
    SetLength(myarray,n);
    sum:=0;
    a:=0;
    for i:=1 to n do
      begin
        myarray[i]:=0;
        a:=a+1;
        myarray[i]:= a;
        if i=1 then myarray[i]:=1
        else myarray[i]:=myarray[i-1]+i;
        sum:=sum+myarray[i];
        setLength(myarray,0);
      end;
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    i,a,sum,n:integer;
    result:string;
    myarray:array of integer;
     begin
    n:=strtoint(edit1.Text);
    SetLength(myarray,n+1);
    sum:=0;
    a:=0;
    for i:=1 to High(myarray) do
      begin
        a:=a+1;
        myarray[i]:= a;
        sum:=sum+myarray[i];
      end;
     result:=inttostr(sum);
     label1.Caption:=result;
     myarray:=nil;
    end;
      

  3.   

    动态数组(长串,比如AnsiString也是是动态数组)。动态数组第一个元素前的SizeOf(Cardinal)个字节保存着它的引用计数和长度(即数组个数),是生存期自管理类型。不必你手动释放。
      

  4.   

    begin
        a:=a+1;
        myarray[i]:= a;
        sum:=sum+myarray[i];
      end;
      这样是错的 你好好看看我的那个表达式
      

  5.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    i,a,sum,n,v:integer;
    result:string;
    myarray:array of integer;
     begin
    n:=strtoint(edit1.Text);
    SetLength(myarray,n+1);
    sum:=0;
    a:=0;
    for i:=1 to High(myarray) do
      begin
        a:=a+1;
        myarray[i]:= a;
        if i>1 then
        for v :=1  to myarray[i] do
         sum:=sum+v
        else
         sum:=sum+1;
      end;
     result:=inttostr(sum);
     label1.Caption:=result;
     myarray:=nil;
    end;
    {当输入10时,结果等于220,楼主你看主否正确}
      

  6.   

    生存期自管理的,会自动释放资源。如果非要手动释放,可以赋nil给它。
      

  7.   

    要手动结束,是SetLength为0.晕我自己的帖子居然自己不能编辑?
      

  8.   

    释放动态数组
    setLength(我的动态数组,0);
      

  9.   

    这部分代码没有内存泄露的问题
    楼主还是找其它代码的问题吧procedure TForm1.Button1Click(Sender: TObject); 
    var 
    i,a,sum,n:integer; 
    result:string; 
    myarray:array of integer; 
     begin 
    n:=strtoint(edit1.Text); 
    SetLength(myarray,n); 
    sum:=0; 
    a:=0; 
    for i:=1 to n do 
      begin 
        myarray[i]:=0; 
        a:=a+1; 
        myarray[i]:= a; 
        if i=1 then myarray[i]:=1 
        else myarray[i]:=myarray[i-1]+i; 
        sum:=sum+myarray[i]; 
        setLength(myarray,0); 
      end;