こんにちは。
レコード型のポインタ同士のやりとりについてお聞きしたいのですが。
TListItem.Dataにレコード型を保存するため、以下のようにしました。

procedure CustomProc(CustomRecord: TCustomRecord);
var
P: PCustomRecord;
begin
New(P);
P := @CustomRecord;
ListView.Items[0].Data := P;
end;

これでやると、CustomProc内では確かにDataにPが代入されていて
CustomRecordと同じ値が参照できるのですが、
このあと別のプロシージャからDataを参照すると中身がからっぽなのです。
そこで、

procedure CustomProc(CustomRecord: TCustomRecord);
var
P: PCustomRecord;
begin
New(P);
P.hoge := CustomRecord.hoge;
ListView.Items[0].Data := P;
end;

としてレコード型の構成要素同士を代入してやるとうまく参照できます。
なぜなのでしょうか?