Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как освобождать память после выделения оператором New / 11 сообщений из 11, страница 1 из 1
04.02.2004, 14:29
    #32398032
Gedeon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
Мож я не прав, думаю по аналогии с С++ там всегда при выделении памяти оператором New, когда обьект уже не нужен память нужно было освобождать оператором Delete, как освобождать память в VBA?
...
Рейтинг: 0 / 0
04.02.2004, 14:31
    #32398040
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
set ... = nothing
...
Рейтинг: 0 / 0
04.02.2004, 14:31
    #32398041
Alex73
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
set ObjectName=Nothing
...
Рейтинг: 0 / 0
04.02.2004, 14:32
    #32398042
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
set myobject = nothing вроде
...
Рейтинг: 0 / 0
04.02.2004, 14:33
    #32398046
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
как мы все хором )
...
Рейтинг: 0 / 0
04.02.2004, 14:34
    #32398050
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
set obj=nothing

Только были на форуме мнения, что это замедляет работу, так сказать, баг Аксеса.
Поиском можно найти, наверное...
...
Рейтинг: 0 / 0
04.02.2004, 14:34
    #32398053
Gedeon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
Всему хору спасиб балшёй
...
Рейтинг: 0 / 0
04.02.2004, 14:34
    #32398055
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
Апаздал!

и не только я :))
...
Рейтинг: 0 / 0
04.02.2004, 15:13
    #32398148
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
Надеюсь только что у Gedeon не сложилось неправильного мнения, что конструкцией Set MyObject=Nothing он безусловно освобождает память. Чтобы долго не объяснять:

Dim MyObject1 as MyClass
Dim MyObject2 as MyClass

' создаем объект, выделяя в памяти место
Set MyObject1 = New MyClass

' устанавливаем еще одну ссылку на тот же самый объект
Set MyObject2 = MyObject1

Set MyObject1 = Nothing

В результате этого кода объект не будет удален из памяти, потому что только одна из двух ссылок была обнулина (Nothing), а вторая все еще указывает на него. VB ведет счетчик ссылок на объект и выгружает их из памяти, пока счетчик не обнулится.

Т.о. можно очень легко получить утечку памяти, если не следить за всеми своими объектными переменными.
Для освобождения памяти в нашем примере, необходимо написать:
Set MyObject1 = Nothing
Set MyObject2 = Nothing
...
Рейтинг: 0 / 0
04.02.2004, 15:15
    #32398152
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
>>VB ведет счетчик ссылок на объект и НЕ выгружает их из памяти, пока счетчик не обнулится.
...
Рейтинг: 0 / 0
04.02.2004, 15:36
    #32398190
Gedeon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как освобождать память после выделения оператором New
Ценное дополнение, однако у меня необходимости с такой манипуляцией обьектов нет, но все равно спасибо, буду знать
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как освобождать память после выделения оператором New / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]