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

Вниз

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

 
danver   (2004-05-09 20:16) [0]

насколько я знаю, у строки типа String есть счетчик ссылок
У меня структура с кучей строк, надо их все обнулить

А в этом коде не будет утечки памяти?

type
 TMyRec = record
   str1: String;
   str2: String;
   str3: String;
   n:    Integer;
   b:    Boolean;
 end;

var
 x: TMyRec;

procedure proc1;
begin
 x.str1 := "1234567890";
 x.str2 := "1234567890";
 x.str3 := "1234567890";

 ZeroMemory(@x, sizeof(x));
end;


 
pasha_golub ©   (2004-05-09 20:19) [1]

Нужно знать директиву компилятора {$H+/-}

В первом случае, имеем string=shortstring, иначе имеем string=адрес нулевого символа. Отсюда и будем плясать. Как у вас?


 
danver   (2004-05-09 20:25) [2]

Я про AnsiString(по дефолту ведь они?)


 
pasha_golub ©   (2004-05-09 20:39) [3]

По дефолту имеем указатели или PChar, что в принципе одно и тоже


 
Romkin ©   (2004-05-09 20:41) [4]

Перевожу: утечка памяти точно будет, причем в любом случае %)


 
danver   (2004-05-09 20:46) [5]

Че все-таки будет ? :(

я так и думал

я представляю так:
есть длина строки, есть указатель и есть кусок памяти, в кот. строка - это я про AnsiString

при обнулении структуры, стираются длина и указатель, строка остается
а система эту память как видит? как занятую?


 
Бином Ньютоныч   (2004-05-09 20:49) [6]

Перед ZeroMemory вызывай Finalize(x)


 
danver   (2004-05-09 20:53) [7]

А после Finalize(x) заного память не надо выделять?

можно опять?
x.str1 := "1234567890";


 
Jack128 ©   (2004-05-09 21:03) [8]


> А после Finalize(x) заного память не надо вынеделять?
нет, память под string автоматически выделяется


 
danver   (2004-05-09 21:09) [9]

OK, спасиб всем, все понял
надо было бы выделять заного, если бы я делал FreeMem или еще что
а я структуру обнуляю

p.s.(offtopic): ну нифига себе салют, окна тресутся


 
danver   (2004-05-09 21:14) [10]

И еще:
а может ZeroMemory и не нужно тогда или нужно, чтобы обнулить числовые типы?



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

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

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1083806272
Funnymind
2004-05-06 05:17
2004.05.23
Удаление папки


11-1071470678
BaDeVlad
2003-12-15 09:44
2004.05.23
Что за глюк с иконками в меню?


8-1078930743
M@D
2004-03-10 17:59
2004.05.23
DelphiX


3-1082900225
td
2004-04-25 17:37
2004.05.23
Программно менять свойства у колонки DBGridEh


1-1083925865
Mazer
2004-05-07 14:31
2004.05.23
FreeReport под Delphi7?