分配内存(GetMem,FreeMem)分配了两次后我就不知道怎么办了 ( 积分: 50 )

  • 主题发起人 主题发起人 ddzhouqian
  • 开始时间 开始时间
D

ddzhouqian

Unregistered / Unconfirmed
GUEST, unregistred user!
var
p1,p2:^byte;
begin
GetMem(p1,10);
.....
GetMem(p2,20);
.......
FreeMem(p2);
FreeMem(p1);
end
编译成功,不过执行过程中会出现无效的指针操作的提示信息(InValid Pointer Operater)
释放顺序,互换过了,还是不可以,请知情的告知,多谢了!
 
程序中间有没有改变p1、p2的值了,比如Inc(p1)等等,如果p1、p2指针改变过了,就不对了。
 
似乎很有道理,我再调试一下,呵呵
我想问一下那个FreeMem时候有先后顺序吗?
大侠!
 
如果有类似 p1 := p2 这样赋值的就最好先FreeMem(p2),因为指针的操作可能直接使用的是堆栈的操作
 
多人接受答案了。
 
后退
顶部