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*)