for i:= 0 to RSessionList.Count -1 do
begin
New(RTempSession);
RTempSession:=rsessionlist.Items[i];
memo1.lines.add('当前用户:'+RTempSession^.RemoteIP +':'+inttostr(RTempSession^.RemotePort));
Dispose(RTempSession);
end;
循环输出数值的时候,总是循环最后一个指针项目的内容。
哪里错了?
调试欢乐多
RTempSession:=rsessionlist.Items[i]; ->这里又给这个指针赋值,指针丢失,内存泄露 Dispose(RTempSession);->这里释放,实际上是释放了TList中的指针内存,问题多多一般来说就是这样,只有在删除的时候才使用Dispose,在增加的时候才使用New
for i:= 0 to RSessionList.Count -1 do
begin
RTempSession:=rsessionlist.Items[i];
memo1.lines.add('当前用户:'+RTempSession^.RemoteIP +':'+inttostr(RTempSession^.RemotePort));
end;
RTempSession:=rsessionlist.Items[i]; ->这里又给这个指针赋值,指针丢失,内存泄露 Dispose(RTempSession);->这里释放,实际上是释放了TList中的指针内存,问题多多一般来说就是这样,只有在删除的时候才使用Dispose,在增加的时候才使用New
for i:= 0 to RSessionList.Count -1 do
begin
RTempSession:=rsessionlist.Items[i];
memo1.lines.add('当前用户:'+RTempSession^.RemoteIP +':'+inttostr(RTempSession^.RemotePort));
end;