Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1083966366
kiote
2004-05-08 01:46
2004.05.23
RichEdit - гиперссылки


6-1081322235
Srg
2004-04-07 11:17
2004.05.23
Indy DEMO


1-1083901059
Mihail
2004-05-07 07:37
2004.05.23
Отображение HTML-страниц в Delphi


1-1083922607
BFG9k
2004-05-07 13:36
2004.05.23
TPageProducer


1-1083908296
Sla
2004-05-07 09:38
2004.05.23
Режим доступа к ТЕКСТОВОМУ файлу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский