Цитата:
Сообщение от Yacudzer
Здравствуйте господа, вот назрел вопрос об освобождении памяти занятой типом String.
|
Ну если обязательно нужно использовать PString, то так
Код:
type
PMyInfo = ^TMyInfo;
TMyInfo = record
a:pointer;
s:integer;
b:PMyInfo;
end;
var
MyInfo:PMyInfo;
procedure qwerty;
var
MyStr:PString;
begin
new(MyStr); {*}
MyStr^:='qwerty'; {**}
new(MyInfo);
MyInfo.a:=MyStr;
// неправильно MyInfo.s:=sizeof(MyStr);
MyInfo.s := Length(MyStr);
end;
/* а теперь всё в обратном порядке */
procedure disposeMyInfo(aMyInfo:PMyInfo);
var
MyStr:PString;
begin
MyStr := PString(aMyInfo.a);
MyStr^:='';
dispose(MyStr); // если выделяем через New, то и удаляем через dispose;
dispose(aMyInfo);
end;
begin
{...некоторый код...}
qwerty;
{...некоторый код...}
disposeMyInfo(MyInfo);
end.