Главная страница
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.012 c
14-19773
an
2003-03-23 03:24
2003.04.07
Для перехода на D7 нужен FastReport для D7 , а точнее frClass


1-19603
xfrost
2003-03-28 18:31
2003.04.07
Таблицы в MS Word


14-19869
handra
2003-03-21 15:36
2003.04.07
Единая база процедур и функций для Delphi


14-19849
Vlad Oshin
2003-03-20 11:45
2003.04.07
причины зависания службы MSGSRV32?


1-19554
race1
2003-03-26 13:15
2003.04.07
property