Вниз
Скачать: 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.04 c
3-1082961275
pet600
2004-04-26 10:34
2004.05.23
Oracle DB-name


1-1084109087
Liona
2004-05-09 17:24
2004.05.23
Сортировка по колонкам в StringGrid?


14-1083778408
tasman
2004-05-05 21:33
2004.05.23
Проблема с loop в asm е


1-1084286042
TUser
2004-05-11 18:34
2004.05.23
var in dll


1-1084349409
glGLU
2004-05-12 12:10
2004.05.23
Click




   Наверх