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

Вниз

PChar утечка памяти   Найти похожие ветки 

 
Bruce   (2006-04-02 20:35) [0]

Здарствуйте!
Есть ли утечка памяти в данном коде?
var
 //s1: string;
 pText, pResultText: PChar;
 ms: TMemoryStream;
begin
 Result := false;
 ms := TMemoryStream.Create;
 pResultText := nil;
 try
   pText := PChar(AText);
   ms.Write(pText^, Length(pText));
   ms.Position := 0;
   if ProcessData(ms) then // производим опр. действия над потоком
   begin
     GetMem(pResultText, ms.Size);
     ms.Read(pResultText^, ms.Size);
     AText := pResultText;
     Result := true;
   end;
 finally
   ms.Free;
   if pResultText <> nil then
     FreeMem(pResultText);
 end;


 
begin...end ©   (2006-04-02 20:50) [1]

> Bruce   (02.04.06 20:35)
> Есть ли утечка памяти в данном коде?

Нет. Но и необходимости использования PChar тоже нет.

Если AText — это string, то я бы сделал примерно так:

var
 ms: TMemoryStream;
begin
 Result := False;
 ms := TMemoryStream.Create;
 try
   ms.Write(AText[1], Length(AText));
   ms.Position := 0;
   if ProcessData(ms) then
   begin
     SetLength(AText, ms.Size);
     ms.Read(AText[1], ms.Size);
     Result := True
   end
 finally
   ms.Free
 end
end


 
Bruce   (2006-04-02 20:56) [2]


> begin...end ©   (02.04.06 20:50) [1]


> Если AText — это string, то я бы сделал примерно так:

Да, AText - это параметр var string, сделаю как вы советуете, просто с опаской отношусь к манипуляциям памятью с типом string :)


 
Джо ©   (2006-04-02 21:10) [3]

> [2] Bruce   (02.04.06 20:56)
> просто с опаской отношусь к манипуляциям памятью с типом
> string :)

Ого, а к конструкциям типа pResultText^ без опаски? ;)


 
Рамиль ©   (2006-04-02 21:11) [4]


> Да, AText - это параметр var string, сделаю как вы советуете,
>  просто с опаской отношусь к манипуляциям памятью с типом
> string :)

смело


 
Bruce   (2006-04-02 22:17) [5]


> Джо ©   (02.04.06 21:10) [3]

а чего там опасаться то ) выделил память, скопировал память )



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

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

Наверх




Память: 0.47 MB
Время: 0.387 c
1-1142283322
Евгений Р.
2006-03-13 23:55
2006.04.16
Hint для DrawGrid


2-1143644852
Цукор5
2006-03-29 19:07
2006.04.16
передача параметра


15-1143444399
zeff
2006-03-27 11:26
2006.04.16
Сохранить иконку с новыми параметрами


3-1140605813
DelphiLexx
2006-02-22 13:56
2006.04.16
FIBDataSet - MasterDetail


2-1144224144
EXILE
2006-04-05 12:02
2006.04.16
Файл базы данных Access