Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.03 c
15-1143613908
Экспериментатор
2006-03-29 10:31
2006.04.16
Как в XP отключить эти всплывающие сообщения?


2-1143573708
mr1Andersen
2006-03-28 23:21
2006.04.16
Простой вопрос


15-1143093703
Ega23
2006-03-23 09:01
2006.04.16
С Днём рождения! 23 марта


2-1144088409
Новочеркасский Волк
2006-04-03 22:20
2006.04.16
Озвучка кнопок.


2-1143626207
FAA
2006-03-29 13:56
2006.04.16
Компонент DateTimePicker




   Наверх