![]() |
Как правильно очистить (удалить) массив с битмапными данными.
Есть некая функция для управления слайд-шоу.
Допустим, в процессе ее работы создается массив (не как локальная переменная, а в области видимости _root), в него заносятся битмапные данные из библиотеки. Используются (аттачатся куда нужно и т. д.). Функция отрабатывается снова. Создаю массив с тем же именем, понятно, что он опять будет пустым и опять готовым к заполнению битмапой. Вопрос. А нужно ли было освобождать память от старой битмапы? Наверное, недостаточно было просто создать новый массив с тем же именем? К сожалению, для экспериментирования недостаточно времени, а теория у меня прихрамывает. |
Нужно, если на старую битмапу есть ссылки. Если нет — смело создаем новый массив ("затирая" предыдущий).
По-идее сборщик мусора должен отработать и очистить память. Как дела обстоят в реальности — не понятно :) Если уж совсем задаться целью, то можно перед созданием нового массива пробежаться по элементам и dispose для каждого. Потом обнулить ссылки и уже после этого создавать новый массив. А вообще странно, зачем нужен dispose для битмапы, если ссылку на нее можно просто переназначить на другую битмапдату (соответственно сделать первую битмапу "клиентом" для мусорщика). Как пишут в хэлпе — чтобы освободить память. Цитата:
|
К сожалению, в работе функции используется сторонний большой класс, и могут ли там остаться ссылки на битмапу, или нет, незвестно, а в детали его работы вникнуть не успею.
Попробую ограничиться обязательным dispose для всех элементов массива. Добавлено через 3 минуты Цитата:
В общем, вопрос остался для меня пока открытым. |
dispose() работает хорошо, память освобождается четко, тем более, я так понял, у вас никаких проблем с ее использованием в коде не возникает, в чем тогда проблема? Используйте, конечно. Ее для того и сделали. Заметьте, dispose() нет, скажем, у массива. Это я к тому, что случай с битмапдатой несколько отличен от остальных.
Просто переназначить ссылку не тру. Особенно, если "количество элементов может быть разным от одного использования до другого". |
| Часовой пояс GMT +4, время: 03:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.