1.GetMem出错
GetMem(RegionData[Iloop], RegionDataSize[Iloop]);<--此处少分配一个字节
修改为:
GetMem(RegionData[Iloop], RegionDataSize[Iloop]+1);
2.
//释放内存空间,删除区域对象
for Iloop := 0 to 12 do
begin
ReallocMem(RegionData[Iloop], 0);<--GetMem分配的内存应该用FreeMem释放 if Region[Iloop] <> 0 then DeleteObject(Region[Iloop]);
end;
修改为
//释放内存空间,删除区域对象
for Iloop := 0 to 12 do
begin
FreeMem(RegionData[Iloop]);
RegionDate[Iloop]:= nil;
if Region[Iloop] <> 0 then DeleteObject(Region[Iloop]);
end;
GetMem(RegionData[Iloop], RegionDataSize[Iloop]);<--此处少分配一个字节
修改为:
GetMem(RegionData[Iloop], RegionDataSize[Iloop]+1);
2.
//释放内存空间,删除区域对象
for Iloop := 0 to 12 do
begin
ReallocMem(RegionData[Iloop], 0);<--GetMem分配的内存应该用FreeMem释放 if Region[Iloop] <> 0 then DeleteObject(Region[Iloop]);
end;
修改为
//释放内存空间,删除区域对象
for Iloop := 0 to 12 do
begin
FreeMem(RegionData[Iloop]);
RegionDate[Iloop]:= nil;
if Region[Iloop] <> 0 then DeleteObject(Region[Iloop]);
end;
我按照你的建议做了,但这个异常仍存在。