|
Modus ponens
модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
|
BitmapData.dispose() - влияет на логику программы. После того, как вы его вызовете, битмадаты больше не будет / ее нельзя будет использовать. Это никак не сравнимо с программами в "неуправляемых" рантаймах, где можно написать абсолютно корректную программу, которая, тем не менее будет течь, т.как где-то будут теряться ссылки на выделенную память.
Т.е. смотрите на задачу так: BitmapData которой не сделали dispose() - очевидно используется в программе. То, что вы ее не удалили - ну так это ошибка в логике вашей программы. Вот если бы вы ее не удалили и потеряли ссылку - вот тогда это утечка. Т.как у вашей программы пропадает шанс "реабилитироваться". А пока этого не произошло - ваша программа просто (возможно) неправильно работает.
Не может быть таких ситуаций в пользовательском коде, когда не возможно определить используется ли (нужен ли) объект или нет. Т.как их всех при создании, автоматически пронумеровали и следят за ссылками, и на уровне ГЦ проблема циклических графов не представляет существенных трудностей. Ошибка может быть только на уровне логики пользовательского кода: открыл сокет, чего-то записал в него, но не прочитал (не освободил буффер) - память занята, но это не ошибка управления памятью, а ошибка пользовательской программы: почему не прочитал / не освободил буффер?
Или, чтобы еще упростить, такой пример: создал я вектор на миллион элементов, а использовал 10 - память закончилась, но утечки в этом случае не было. Просто нерационально использован ресурс. Но программа может реабилитироваться, например, выбросив весь вектор.
__________________
Hell is the possibility of sanity
|