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