Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
3-19497
Я
2003-03-19 13:17
2003.04.07
Сортировка в вычисляемых полях


1-19588
ksushishka
2003-03-28 16:29
2003.04.07
Вывод строки


14-19761
KPY
2003-03-22 10:06
2003.04.07
Поздравляю народ с НАУРЫЗОМ!


6-19726
TButton
2003-02-13 18:07
2003.04.07
СерверСокет


1-19596
Opera
2003-03-25 21:48
2003.04.07
Условие





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский