Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Объект и Nothing


Автор: ИгнатьевАлексей 8.11.2020, 17:17
Друзья, давно программирую на VBA, но так и не понимаю до конца.
Объясните, наконец, пож-та!

Типовая ситуация:

1. Я объявляю объектную переменную, например myBestBook типа "Excel.Workbook";
2. Инициализирую, т.е. загружаю в нее книгу;
3. Работаю с этой книгой, поработал, сохранил;
4. Завершаю работу и (как учили) делаю 
Код

Set myBestBook = Nothing
  smile 

Вот зачем я это делаю? Высвобождаю оперативку....
А если не сделаю, VB сам не освободит эту память? 

Автор: Akina 8.11.2020, 20:48
Цитата(ИгнатьевАлексей @  8.11.2020,  18:17 Найти цитируемый пост)
А если не сделаю, VB сам не освободит эту память? 

Нет. Объект существует, пока существует хотя бы одна ссылка на него.

Автор: ИгнатьевАлексей 9.11.2020, 17:09
Akina
Спасибо! Однако хочу понять до конца.
Я создал этот объект. Я на него ссылался. Программа завершена. А ссылки остались?
Или это так просто не объяснить? Надо глубже изучать эти процессы?

Автор: Akina 10.11.2020, 07:25
Цитата(ИгнатьевАлексей @  9.11.2020,  18:09 Найти цитируемый пост)
Я создал этот объект. Я на него ссылался. Программа завершена. А ссылки остались?
Или это так просто не объяснить?

Зависит от того, какой объект.

Если, скажем, этот какой-то встроенный объект (ну... скажем, окно) - программа его, конечно, полностью выгрузит при завершении.
Если это, к примеру, объект RegExp - программа при завершении даст ему команду "Ты не нужен, завершайся", а уж завершится он или нет - это его дело (точнее, дело WScript).
Если же это, скажем, объект Excel.Application, то программа выгрузит всё, связанное в объектом, а запущенный для его обслуживания COM-сервер, скорее всего, останется в системе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)