为何这里 DisPose 出错 ?谢谢(20分)

  • 主题发起人 主题发起人 pcgod
  • 开始时间 开始时间
P

pcgod

Unregistered / Unconfirmed
GUEST, unregistred user!
您好, 请教空间释放
New() 后的指针为何 DisPose 出错 ?
代码:
procedure TForm1.Button1Click(Sender: TObject);
type
arr = array[0..3] of Integer ;
p = ^arr ;
var
myp : p ;
myarr : Arr ;
mystr,s : String ;
i : Integer ;
begin
for i := 0 to 3 do
myarr := I*10 ;
New(Myp) ;
Myp := @myarr ;
for i := 0 to 3 do
begin
s := s + IntToStr(Myp^) ;
end;
ShowMessage(s) ;
// DisPose(Myp) ; //空间这样释放出错
Myp := Nil ;
end;
谢谢
 
New(Myp) ; //申请空间
Myp := @myarr ; //你把上面申请的内存空间地址给破坏了
...
DisPose(Myp) //Myp已经不是你申请的地址, 当然无法释放了
 
谢谢,原来如此,还有不同的看法吗 ?
 
应该是Myp^ := myarr ;

 
对,这样一来地址就不会被破坏
 
多人接受答案了。
 
后退
顶部