![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Счетчик ссылок. [D7, 2003]
vlad0 © (2007-10-05 10:17:00)Просто стало интересно, а можно ли узнать значение счетчика ссылок у string'овой переменной например?
var
str1, str2, str3: string
begin
str1 := 'hi';
str2 := str1;
str3 := str1;
......
Однокамушкин (2007-10-05 10:31:00) [1]
> vlad0 (05.10.07 10:17)
> var
> str1, str2, str3: string
> begin
> str1 := 'hi';
> str2 := str1;
> str3 := str1;
Если в данном случае использовать метод Инс © (05.10.07 10:25) [1], счётчик ссылок получится -1, но это не значит, что метод неправильный, просто строки, заданные литералами, для экономии памяти ссылаются прямо на сам литерал в коде, а не на его копию в динамической памяти, а чтобы отличать "литеральные" строки от "динамических", для "литеральных" счётчик ссылок всегда делают -1
Если хотите получить "правильное" значение счётчика, после str1 := 'hi' поставьте UniqueString(str1) - это приведёт к тому, что литерал скопируется в динамическую память, и str1 начнёт указывать на эту копию, а не на сам литерал
Инс (2007-10-05 10:25:00) [2]Можно, а зачем? Вообще так:
RefCnt:=PInteger(PChar(str) - 8)^;