关于TreeView.Item. Data的内存分配问题(一个不容易的问题)
看到别人写的代码,如下:
type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;
...
procedure Button1Click(Sender: TObject);
var
itm:Ttreenode;
MyRecPtr: PMyRec;
begin
itm:=treeview1.Items.Add(nil,'first')
New(MyRecPtr);
MyRecPtr^.FName := 'f';
MyRecPtr^.LName := 'l';
itm.Data:=MyRecPtr;
itm.Parent.Expand(false);
itm.Selected:=true;
end;
1、请问当itm.Data:=MyRecPtr;时是将itm.Data的指针指向MyRecPtr所指向的内存地址,还是重新复制了一块相同内容的内存让itm.Data指向它。
2、既然用了New,用不用Free回收资源,如果用了Free,经过itm.Data:=MyRecPtr的itm.Data是否还继续有效。
3、当Button1Click事件发生多次(超过一次)时,内存是怎样分配的。