Вниз
Скачать: CL | DM;

Как получить String имея указатель и длину ?   Найти похожие ветки 

 
Vlad ©   (2004-02-11 15:41) [40]


> However, wide strings are not reference counted.

А каким же образом компилятор узнает когда нужно освобождать память ?


 
Тимохов ©   (2004-02-11 15:45) [41]


> А каким же образом компилятор узнает когда нужно освобождать
> память ?

Он умный.
Он же как-то узнает, что нужно освобождать память из под простых строк когда счетчик равен 0.
Просто он считает, что счетчие у widestring равен 1. Когда станет равен 0 - освободит.


 
Johnmen ©   (2004-02-11 15:48) [42]

>Vlad © (11.02.04 15:41) [40]

Не компилятор, а менеджер памяти...:)


 
Тимохов ©   (2004-02-11 15:52) [43]


> Не компилятор, а менеджер памяти...:)

Интересно какими понятиями Вы руководствуютесь когда делаете такое разделение?
Менеджер памяти никто, пока его явно не попросят что-то освободить. А просит то компилятор.


 
Serginio666   (2004-02-11 15:59) [44]

Одной ссылки достаточно

type
PStrRec = ^StrRec;
StrRec = packed record
refCnt: Longint;
length: Longint;
end;

var
P: PStrRec;
begin
P := Pointer(Integer(str) - sizeof(StrRec));
Len:=p.length;


 
Johnmen ©   (2004-02-11 16:13) [45]

>Менеджер памяти никто, пока его явно не попросят что-то освободить. А просит то компилятор.

Просит во время работы программы ?
:)


 
Тимохов ©   (2004-02-11 16:17) [46]


> Просит во время работы программы ?
> :)

Нет, в откомпиленном компилятором коде.
Что говорить - можно же цпу посмотреть в конце методов - там есть осовобождение локальных строк - это же заслуга компилятора поставить туда эти команды.
И вообще менеждер памяти тупая скотина - освобождает только то, что ему говрят из методов очистки мусора.


 
Vlad ©   (2004-02-11 16:20) [47]


> Johnmen © (11.02.04 16:13) [45]

Я так понимаю, что компилятор определяет когда и что нужно освобождать до запуска программы, когда преобразовывает все в ассемблерный код. Или я не прав ?


 
Johnmen ©   (2004-02-11 16:29) [48]

>это же заслуга компилятора поставить туда эти команды.

Заслуга компилятора - поставить туда вызовы ртл"ных функций...:)
^
>Vlad © (11.02.04 16:20) [47] !
!
Нет, не определяет. См. -------------!



Страницы: 1 2 вся ветка

Скачать: CL | DM;



Память: 0.53 MB
Время: 0.02 c
7-80332
Cosinus
2003-12-02 13:37
2004.02.25
Странное влияние монитора портов на обмен данными


14-80149
Мыслитель
2004-01-30 18:21
2004.02.25
Бойцовский Клуб!


14-80138
syte_ser78
2004-02-02 09:46
2004.02.25
Помогите плиз с алгоритмом


1-79990
Sergei!
2004-02-13 11:59
2004.02.25
TComboBoxEx.Indent не работает


1-79925
Ivolg
2004-02-09 17:42
2004.02.25
Файлы




   Наверх