链表中的数组如何释放的问题

山娃马小三儿 山娃马小三儿 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
type
TArrayByte =Array of Array of Byte;

//定义数据结构
PTOnLineMeter =^TOnlineMeter;
TOnLineMeter =packed record
SocketID :TSocket;
CommandData :TArrayByte;
end;
//定义一个TList
OnLineMeterList_GPRS
//new一个结构
POnLineMeter :PTOnLineMeter;
New(POnLineMeter);
SetLength(POnLineMeter^.CommandData, sizeof(ArrayTemp)); //ArrayTemp另外定义的TArrayByte变量
Move(ArrayTemp, POnLineMeter^.CommandData, sizeof(ArrayTemp));
OnLineMeterList_GPRS.Add(POnLineMeter);

//释放
for i :=OnLineMeterList_GPRS.Count -1 downto 0 do
begin
if delSocket =PTOnLineMeter(OnLineMeterList_GPRS.Items[i])^.SocketID then
begin
//SetLength(PTOnLineMeter(OnLineMeterList_GPRS.Items[i])^.CommandData, 0);
//PTOnLineMeter(OnLineMeterList_GPRS.Items[i])^.CommandData :=Nil;
Dispose(PTOnLineMeter(OnLineMeterList_GPRS.Items[i]));
OnLineMeterList_GPRS.Delete(i);
end;
end;

Dispose(PTOnLineMeter(OnLineMeterList_GPRS.Items[i]));这一句运行的时候报无效指针,我猜大概是这个数组造成的,因为如果在new的时候,不给这个数组赋值,就能正常释放。释放前面两句代码,注销与不注销都报错
...全文
评论 4
收藏 已收藏
分享
返回顶部