秋
秋之叶
Unregistered / Unconfirmed
GUEST, unregistred user!
type
PRec = ^TRec;
TRec = record
Name: string[12];
Id: Integer;
end;
.......
implementation
var
s: string;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
P: PRec;
begin
SetLength(s, SizeOf(TRec));
new(P);
P.Name := 'fanghe';
idc := idc + 1;
P.Id := idc;
move(p, s[1], SizeOf(TRec));
Dispose(P);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
P: PRec;
begin
p := new(PRec);
move(s[1], p, SizeOf(TRec));
caption := '名称:' + P.Name + ' 编号:' + inttostr(P.Id);
dispose(p);
end;
同样用到指针的两个过程,为什么第二个过程指针释放时报错?
跟move有关吗?
如果第二个过程中p改为全局变量,不在过程中释放指针,是否会造成内存泄漏?
正确的写法应该是什么?
多谢关注。
PRec = ^TRec;
TRec = record
Name: string[12];
Id: Integer;
end;
.......
implementation
var
s: string;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
P: PRec;
begin
SetLength(s, SizeOf(TRec));
new(P);
P.Name := 'fanghe';
idc := idc + 1;
P.Id := idc;
move(p, s[1], SizeOf(TRec));
Dispose(P);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
P: PRec;
begin
p := new(PRec);
move(s[1], p, SizeOf(TRec));
caption := '名称:' + P.Name + ' 编号:' + inttostr(P.Id);
dispose(p);
end;
同样用到指针的两个过程,为什么第二个过程指针释放时报错?
跟move有关吗?
如果第二个过程中p改为全局变量,不在过程中释放指针,是否会造成内存泄漏?
正确的写法应该是什么?
多谢关注。