G
GrassDragon
Unregistered / Unconfirmed
GUEST, unregistred user!
初学DELPHI,问题愚笨,见笑,请指教!
举例说明:
type
PMyRecord=^TMyRecord;
TMyRecord=record
a: string;
b: integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var p: PMyRecord;
begin
new(p);
p^.a:='abc';
p^.b:=12;
self.Caption:=p.a+inttostr(p.b);
end;
procedure TForm1.Button2Click(Sender: TObject);
var p: PMyRecord;
begin
new(p);
p.a:='abc';
p.b:=12;
self.Caption:=p^.a+inttostr(p^.b);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
tmp: TMyRecord;
p: PMyRecord;
begin
tmp.a:='edf';
tmp.b:=13;
new(p);
p^:=tmp;
self.Caption:=p^.a+inttostr(p^.b);
dispose(p);
end;
Button1Click和Button2Click的执行结果是相同的.
我的第一个问题是:
p^和p两种不同的写法到底是不是一回事,有什么区别?
我的第二个问题是:
是否必须使用dispose(p)来释放内存?
Button3Click中的tmp变量所占内存,在过程执行完后是否会自动释放?
举例说明:
type
PMyRecord=^TMyRecord;
TMyRecord=record
a: string;
b: integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var p: PMyRecord;
begin
new(p);
p^.a:='abc';
p^.b:=12;
self.Caption:=p.a+inttostr(p.b);
end;
procedure TForm1.Button2Click(Sender: TObject);
var p: PMyRecord;
begin
new(p);
p.a:='abc';
p.b:=12;
self.Caption:=p^.a+inttostr(p^.b);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
tmp: TMyRecord;
p: PMyRecord;
begin
tmp.a:='edf';
tmp.b:=13;
new(p);
p^:=tmp;
self.Caption:=p^.a+inttostr(p^.b);
dispose(p);
end;
Button1Click和Button2Click的执行结果是相同的.
我的第一个问题是:
p^和p两种不同的写法到底是不是一回事,有什么区别?
我的第二个问题是:
是否必须使用dispose(p)来释放内存?
Button3Click中的tmp变量所占内存,在过程执行完后是否会自动释放?