Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

указатель на структуру   Найти похожие ветки 

 
ewgeny   (2003-03-27 10:41) [0]

есть такой вопрос, как правильно освободить память ?
см. функции: GetInfo, FreeInfo;

есть структура:

PItemRec = ^TItemRec;
TItemRec=record
i : Integer;
Name : PChar;
Desc : PChar;
end;

Есть функция, которая выделяет память и возвращает указатель на структуру.

function GetInfo( .. ) : PItemRec;
begin
New( result );
with result^ do
begin
i := random(10);
Name := StrNew(PChar(GetField("NAME").asString));
Desc := StrNew(PChar(GetField("DESC").asString))
end;
end;

правильно ли это ???

procedure FreeInfo( info : pitemrec);
begin
if info = nil then exit;
DisposeStr(info^.Name);
DisposeStr(info^.Desc);
Dispose( PitemRec(Info));
end;


 
ewgeny   (2003-03-28 16:20) [1]

никто не ответит ?


 
ewgeny   (2003-03-28 16:32) [2]

але ?


 
Anatoly Podgoretsky ©   (2003-03-28 16:38) [3]

Неправильно, для info ты проверяещь на nil, а для Name и Desc нет, другое дело если бы это было StrDispose, та проверяет сама.

Но непонятнр какая нужда заставляет использовать здесь PChar, читаем справку Both DisposeStr and NewStr are obsolete.


 
chdv   (2003-03-28 16:41) [4]

правильно


 
Mystic ©   (2003-03-28 16:42) [5]

Вроде правильно.

Только почему PChar, а не string?
Указывать ^ при обращении к полям записи необязательно.
В чем смысл приведения PitemRec(Info), если info : pitemrec ?


 
Mystic ©   (2003-03-28 16:50) [6]

По крайнем мере в D6:
procedure DisposeStr(P: PString);
begin
if (P <> nil) and (P^ <> "") then Dispose(P);
end;


Только NewStr соотвествует DisposeStr // Используется PString
Только StrNew соотвествует StrDispose // Используется PChar
А ты их смешал...


 
ewgeny   (2003-03-28 16:57) [7]

PChar используется потому,что DLL


 
ewgeny   (2003-03-28 17:00) [8]

пардон, писал прямо на форуме, конечно же пищу в программе StrDispose



Страницы: 1 вся ветка

Текущий архив: 2003.04.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
14-19841
Dudao
2003-03-20 06:26
2003.04.07
TMemo ? >


14-19863
REA
2003-03-21 15:30
2003.04.07
Оптимизатор и векторизатор


14-19872
Lex(unreg)
2003-03-21 20:44
2003.04.07
Как грузить Jpeg в Image???


1-19625
Someone
2003-03-25 13:23
2003.04.07
Толщина линии Zoom a у TChart


14-19817
reticon
2003-03-19 19:56
2003.04.07
установка приложения