Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2008-04-03 22:19:37 ЛС | профиль | цитата
tsdima, давай уточним некоторые подробности

И давай будем плясать от того KOLEdb.pas, который лежит на SVN
Хотя бы для определенности
В котором, кстати говоря, StringToOleStr мной правился на предмет возврата WideString, в отличие от PWChar для библиотечного варианта
И для Дельфей - тоже.
Есть независимый эксперимент, подтверждающий правильность именно такового: стартовый пример, выложенный коллегой Alexbootch, но с добавкой повторного (от кнопы, с предварительной чисткой таблицы, естественно) запуска OLEdb_Session.doCreate - там старая сессия изничтожается (грубо говоря - ss.free), а новая - создается.
Все бесконечно прозрачно: с системным вариантом StringToOleStr - есть утечка памяти, с нашим вариантом - все динамически корректно.
Этот вопрос попросту закрыт, как мне представляется.

Так вот, возвращаясь к нашим баранам, ну никак не прекращается у меня утечка памяти: хоть выношу (кстати, у меня тоже вынесено) CoInitialize/CoUnInitialize в initialization/finalization, хоть - нет.
Ничего не меняется.
По нажатию кнопочки счетчик хэндлов ведет себя примерно так: 66-98-105-110-114-118-122-... ну и так далее, выходит на стабильный режим "прибавления четверки"

И никаких вразумительных "слов", меняющих это поведение - не нашел
Естественно, варианты всевозможных присваиваний nil интерфейсам - тоже пробовал. Еще до того, как стал asm-коды смотреть
Это что, у лично у меня такая винда, или приколы XP-Home
В кодах баги искать, я уже отчаялся - не нахожу, и все тут
Хотя глаз у меня уже "замыленный", конечно...
карма: 9

0