Як правильно звільнити пам'ять record

Як правильно звільнити пам'ять Record

У мене є компонент TListView. При додавання нового ітемов до нього додається Значення Data.

type
# XA0; PUser # XA0; = ^ AUser;
# XA0; AUser # XA0; = record
# XA0; # XA0; nick # XA0 ;. ShortString;
# XA0; # XA0; rights. Byte;
# XA0; # XA0; Id. ShortString;
end;

var User # XA0; # XA0 ;. PUser;
# XA0; # XA0; clname # XA0 ;: TListItem;

// вирізка з коду додавання ітемов
clname: = ListView1.Items.Add;
clname.Caption: = "якийсь юзер";
New (User);
User ^ .nick: = name;
User ^ .rights: = adm;
User ^ .Id: = "123";
clname.data: = User;

// тепер необхідно видалити ітем і відповідно видалити дані, що відносяться до нього. Я роблю так:
Dispose (ListView1.Items.Item [i] .Data);
ListView1.Items.Item [i] .Delete;

Як правильно очистити пам'ять при видалення item?

тобто в моєму випадку я правильно видаляю дані. тобто при виклику Dispose (ListView1.Items.Item [i] .Data) віддаляється і самі дані PUser створені в системі?

А ось інша ситуація. Існує якесь кількість створених примірників PUser в системі.
Мені частина необхідно видалити.
Чи так це робиться
New (Puser);
Puser: = somePointer;
Dispose (PUser);

Піти чи інформація з пам'яті?
або є якісь інші процедури для очищення?

ну от не знає ніхто?

Правильно робити так:

var
# XA0; somePointer: PUser;
# XA0 ;.
begin
# XA0; somePointer: = New (Puser);
# XA0 ;.
# XA0; Dispose (somePointer);
# XA0 ;.
end;

Спасибі велике за допомогу !

Спасибі велике за допомогу !