Вверх ↑
Ответов: 2125
Рейтинг: 159
#1: 2008-03-14 18:23:36 ЛС | профиль | цитата
Galkov писал(а):
Внимание, логическое утверждение

Я полагаю, что:
1. счётчик ссылок есть у объектов в Дельфи (скорее всего так и есть)
2. widestring это объект
3. незачем иметь собственный счётчик ссылок для BSTR, если он уже есть в винде

Поэтому для объекта widestring процедуры учёта ссылок не стандартные, а те, что ты раскопал.
Заметь, [EDX-4] это всего лишь длина строки (если почитать про BSTR, то в MSDN написано length-prefixed string used by Automation). Про счётчик ссылок в MSDN ни слова, хотя я подозреваю что он в [EDX-8]. Именно поэтому не inc [EDX-8], а CALL SysAllocStringLen. Длинна там - в байтах, поэтому делится пополам, в результате получается абсолютно идентичная строка, и винды не копируют строку, а увеличивают счётчик ссылок.

------------ Дoбавленo:

Отсюда вывод: нельзя менять строку, выделенную при помощи SysAllocString (потому и придумали тип BSTR, который по сути OLECHAR*)
карма: 1

0