Текущий архив: 2002.11.04;
Скачать: CL | DM;
Вниз
string в record Найти похожие ветки
← →
VaS © (2002-10-23 21:06) [0]
type
PRec = ^TRec;
TRec = record
s: string;
end;
...
var
Rec: PRec;
begin
New(Rec);
try
Rec.s:="A string";
finally
Dispose(Rec);
end;
end;
Есть опасения, что память, выделенная под строку не освободится. Это так?
← →
SottNick (2002-10-24 06:44) [1]А так пробовал?
TRec = record
s: string[255];
end;
← →
Bis (2002-10-24 08:23) [2]если у тебя строки короткие, то все ок.
если длинные, то компилятор сам должен заботится об освобождении памяти, выделенной для символов строки.
← →
SVM (Perm) (2002-10-24 08:51) [3]Dispose и New вроде как освобождают.
GetMem и FreeMem - нет, надо делать Finalize.
← →
Skier © (2002-10-24 10:00) [4]>VaS
Этот вопрос часто задаётся.
Ответ такой : и FreeMem и Dispose освободят строку.
← →
McSimm © (2002-10-24 10:28) [5]И ответ неправильный.
Правильный ответ - Dispose освободит. FreeMem - нет.
← →
Skier © (2002-10-24 10:31) [6]>McSimm
IMHO, ты не прав.
← →
Bis (2002-10-24 10:39) [7]народ, лучше проверить, чем спорить или указать где толково объяснено.
Кто знает, как прочитать значение счетчика строк для энси-строк?
Тогда можно сделать тест.
← →
Skier © (2002-10-24 10:41) [8]>McSimm
Да.
Я прогнал FreeMem чрез Alt+Ctrl+C
Finalize не вызывается.
Видимо ты прав.
← →
Anatoly Podgoretsky © (2002-10-24 10:42) [9]Skier © (24.10.02 10:31)
Попробуй это подтвердить
← →
McSimm © (2002-10-24 10:44) [10]>Skier © (24.10.02 10:31)
>>McSimm
>IMHO, ты не прав.
Вполне допуская такую возможность, тем не менее остаюсь при своем мнении.
Поскольку внимательно изучал работу со строками.
Давай обмениваться аргументами. Вот, для начала, выдержка из справки по процедуре Fianlization:
--
If a dynamic variable meets the following two conditions, a call to Finalize is required to finalize the variable before it can be deallocated.
- The variable is deallocated by other means than the Dispose standard procedure (for example using FreeMem).
- The variable contains long strings, variants, or interfaces, not all of which are empty or Unassigned.
--
← →
Skier © (2002-10-24 10:46) [11]>McSimm © (24.10.02 10:44)
см. Skier © (24.10.02 10:41)
А вообще-то нужно привлечь к этой ветке внимание, чтобы
разобраться с этим раз и навсегда, т.к. вопрос часто задаётся
и спор разгорается каждый раз с новой силой.
← →
McSimm © (2002-10-24 10:46) [12]>Skier © (24.10.02 10:41)
Когда писал еще не видел твоего сообщения.
Так что адресую свое предыдущее сообщение всем как резюме по данному вопросу.
← →
McSimm © (2002-10-24 10:51) [13]>Skier © (24.10.02 10:46)
Дело в том, что многие уже разобрались раз и навсегда.
Но вопрос действительно не теряет актуальности.
(Давно хочу написать статью на тему тонкостей работы со строками, но, видимо, никогда не закончу :( )
← →
Skier © (2002-10-24 10:55) [14]>McSimm
> Дело в том, что многие уже разобрались раз и навсегда.
Ага. И я тожу уже. :)
← →
VaS © (2002-10-24 14:17) [15]Так-с... :))) Господа разобравшиеся, теперь аргументированно докажите, что память таки освождается.
← →
Bis © (2002-10-24 14:20) [16]история повторяется снова и снова
и кто придумал эту спираль? Не Архимед случайно? ))
Страницы: 1 вся ветка
Текущий архив: 2002.11.04;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.018 c