Delphi Setlength 内存释放总结
2021-06-27 07:07
标签:声明 detail 循环 内存 函数 还需 get -- UNC https://blog.csdn.net/lotusyangjun/article/details/8203521 一、在Setlength 被调用次数不多时,可直接使用以下代码进行释放 procedure TForm1.Button1Click(Sender: TObject); procedure TForm1.Button2Click(Sender: TObject); type procedure TForm1.Button3Click(Sender: TObject); bb := getaa; procedure TForm1.Button2Click(Sender: TObject); 三、当Setlength在for 或while 循环中使用,被频繁调用很多次时,极易抛出EoutOfMemory异常。此时建议将setlengt拿到循环外部使用,或一次性调用,为动态数组或结构分配足够大的空间。 Delphi Setlength 内存释放总结 标签:声明 detail 循环 内存 函数 还需 get -- UNC 原文地址:https://www.cnblogs.com/tc310/p/10080783.html
var
aa: array of integer;
var
I: Integer;
begin
SetLength(aa, 1000);
for I := 0 to 999 do
begin
aa[I] := i;
end;
end;
begin
SetLength(aa, 0);
end;
//这样就OK 了
二、如果是作为临时变量,赋值给Result作为函数的返回值时,此时除释放bb外,还需释放临时变量aa。
Taa=array of Integer;
var bb : Taa;
begin
SetLength(bb,0); //执行此行,内存无变化
end;
function TForm1.getaa:Taa;
var i : Integer;
begin
SetLength(aa,10000000); //如果采用SetLength(Result,10000000); 直接为Result赋值然后返回,则在上面Button3Click可释放内存
for i := 0 to 10000000 - 1 do
begin
aa[i] := i + 1;
end;
Result := aa;
end;
begin
SetLength(aa,0); //执行此行,内存占用才减少
end;
---------------------
作者:北环阳光
来源:CSDN
原文:https://blog.csdn.net/lotusyangjun/article/details/8203521
版权声明:本文为博主原创文章,转载请附上博文链接!
上一篇:windows注册表操作
下一篇:c#第三章
文章标题:Delphi Setlength 内存释放总结
文章链接:http://soscw.com/index.php/essay/98330.html