Odysseos
![](http://forum.ru-board.com/board/avatars/Hercules.gif)
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Frodo_Torbins Мне, в общем, ни к чему такое проверять - я интерфейсами при работе с DLL пользуюсь. Однако - посмотрите описание менеджера памяти FastMM. Добавлено: volser А при чём тут RTTI??? FastMM - это альтернативный штатному борландовскому менеджер памяти, который, при инициализации DLL, ищет, нет ли уже работающего его экземпляра, запущенного exe-шником - и если находит, то перенаправляет процедуры резервирования/отпускания памяти на уже работающие в exe-шнике. Только он должен стоять первым в uses у *.dpr и EXE, и DLL. Добавлено: Varenik Тут "работать осторожно" не поможет - потому что из EXE нельзя вызывать никакие методы объекта, созданного в DLL, изменяющие любые managed-поля этого объекта (стандартные Delphi-строки, динамические массивы, variant'ы), либо возвращающие созданные внутри них managed-данные (не являющиеся полями объекта; поля объекта возвращать можно - но их нельзя потом изменять в EXE, да и тут можно нарваться - в объекте строку поменяли, создалась новая строка, ссылка на старую осталась только переданная в EXE, в EXE ушла из области видимости - счётчик ссылок обнулился - неявно вызвался "деструктор", попытавшийся освободить память, аллоцированную другой копией менеджера памяти - нате-получите здесь AV, а в DLL - утечку памяти, потому как все ссылки на строку потеряны). | Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 20:41 12-11-2009 | Исправлено: Odysseos, 20:55 12-11-2009 |
|