大家不要笑我,问一个关于动态数组的基础问题。(50分)

  • 主题发起人 主题发起人 liyinwei
  • 开始时间 开始时间
L

liyinwei

Unregistered / Unconfirmed
GUEST, unregistred user!
//我问的是以下这段代码会不会造成内存泄漏?
var
s: array of String;
i: Integer;
begin
SetLength(s,100);
for i := 0 to 99 do
s := '123456';
s := nil
//主要是问问这一句会不会?为什么?
end;
 
SetLength(S, 0);
 
不会泄露

S是释放了
每一个S的元素都是一个String(也是一个数组)
其实,你这相当于二维的Char数组

S是局部变量,S的元素在此过程结束后,自动释放了
 
不会,s仅仅为指向你所申请的指针数组的首地址
设为nil,就不再指向那块地址,那块地址已经无效
可以被其他程序访问,当然你可以想CoolSlob把它长度设为0
 
SetLength(S,0)
是释放动态数组的方法
S:= nil;
也是一种正确的释放动态数组的方法
 
哈哈!
我明白了,谢谢大家!
稍候结贴。
 
多人接受答案了。
 
后退
顶部