Як правильно звільнити пам'ять 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;
Спасибі велике за допомогу !
Спасибі велике за допомогу !