| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > освобождение памяти под интерфейс |
| Автор: NieL 4.1.2011, 12:09 | ||
вопрос: А нужно ли следить за памятью используемой интерфейсом? Вот, к примеру, метод в котором юзается интерфес IXMLDOMDocument.
Просмотрел полно примеров, в некоторых, по окончанию пользования интерфейсом сбрасываю его в nil, как в моем методе, в некоторых не сбрасывают. Проверял FastMM'ом, мемори лики, если не сбросить в nil, не фиксируются, занимаемая память вроде как освобождается. Внесите ясность. |
| Автор: Snowy 4.1.2011, 12:16 |
| Интерфейс имеет счетчик ссылок. Если все ссылки потеряны, то он автоматически уничтожается менеджером памяти. Некоторые специально наследуют все свои классы от интерфейса, чтобы не заморачиваться с уничтожением. Сброс ссылки в nil применяется для немедленного уничтожения. P.S. Это кстати, на тему сборки мусора в дельфи |
| Автор: NieL 4.1.2011, 12:55 | ||
слышал, что теоретически должно так быть, но вот практически возникают утечки памяти. |
| Автор: Snowy 4.1.2011, 15:16 |
| Если в этом случае есть утечки, значит не все ссылки умирают. Значит кто-то где-то продолжает ссылаться. Например, если создать ActiveX контрол, с указанием Owner'a Вроде ссылок на контрол уже нет. Ан нет... Owner его по прежнему помнит. |