Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c