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

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



Память: 0.47 MB
Время: 0.026 c
8-1078724110
Артем К.
2004-03-08 08:35
2004.05.23
как залить градиентом регион произвольной формы


14-1083216629
Yar-Com
2004-04-29 09:30
2004.05.23
Не пойму что с головой происходит.....


1-1083813352
Vilux
2004-05-06 07:15
2004.05.23
Кол-во дней между двумя датами


8-1078282572
ИМХО
2004-03-03 05:56
2004.05.23
Монохромность


1-1083873447
Mister
2004-05-06 23:57
2004.05.23
TDateEdit




   Наверх