Страница: 1 |
хм... ну когда ты объекту присвоеваешь ссылку Nothing то он уничтожается... благадоря системе сбора мусора +) уничтожает объекты на которых нет ссылки .. а вот переменные которые ты объявляешь на уровне процедуры... то что то не пойму.... что ты именно хочешь ... при каждом входе в процедуру они обнуляются..... а удалить их ты не сможешь так как это при компиляции под них заводится место ... то бишь они не динамически созданы.... да кстати опытным путём было замечено что некоторые переменные в твоих процедурах вообще не используются .. то бишь компилятор компилирует оптимально ...!!! настолько что сам знает что ненадо например использовать твою переменную тут а можно обойтись ....... например вот такой код Public Function test1(ByVal test As Long) As Long Dim a As Long Dim b As Long a = test b = test a = a + b test1 = a End Function Компилятор преобразовал вот в такой mov eax, dword ptr [esp+04] 'берём параметр переданный в функции из стека add eax, eax 'складываем его с ним же.... (то что функция возвращает находится всегда в регистре eax) ret 4 ' очищаем стек и возращаемся в точку вызова как видешь он сам догадался что нет смысла присваивать одной переменой значение .. потом другой ... потом складывать и тд итп.... а сделал всё оптимально .!! Получается, о переменных на уровне процедуры можно не думать.Ясно. Просто заметил что после создания объектов и объявления переменных все работает медленнее(после выхода из программы), уничтожил объекты и глобальные -система стала пошустрее, думал, может все переменные покосить. Ну раз компиляторы такие умные, то пусть и уничтожают сами. переменные ты не можешь уничтожить +)... а вот обнулять их надо ... хотя система ВБ сама их обнулит .. ну прсото мол для красоты... +) угу.... 2 Fallout Посоветуй и мне что нибудь. Только учти - я с ними никогда не работал. Глянул этот код. Хм. Какой то шибко умный компилятор. Как это он сразу узнал что а=б? Даже никаких операций сравнения не производил. я не отладчиком ДизАссемблером а именно WDASM32 (с ним у тебя проблем не бдет там и отладчик и дизассемблер.... напиши в любом поисковике... найдёшь .... писать лучше так : w32dasm) хм... да просто зачем ему это сравнивать если ..... указатель на параметр который мы передали один и тот же.... ему всё ровно что ты передашь функциии... если указатель на это что то .... один и тот же то и значение будут равными..... кстати мне очень понравилось ..... то что ВБ "думает" и анализирует код стараясь сделать его более быстрым...... Страница: 1 |
Вопрос: Уничтожение переменных
Добавлено: 22.11.03 00:16
Автор вопроса: cresta
При выгрузке форм рекомендуется уничтожать созданные в процессе работы объекты и устанавливать
все переменные в Nothing. С глобальными переменными понятно, а вот переменные объявленные на уровне процедур требуют установки в Nothing или они автоматически уничтожаются при выходе из процедуры.Просветите кто-нить,плиз
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #1
Добавлено: 22.11.03 03:10
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 22.11.03 14:25
Номер ответа: 3
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #3
Добавлено: 23.11.03 01:06
Номер ответа: 4
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #4
Добавлено: 23.11.03 01:11
Или для очистки совести
Номер ответа: 5
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #5
Добавлено: 23.11.03 01:12
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 29.11.03 18:04
Ты каким отладчиком VB просматриваешь?
Номер ответа: 7
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #7
Добавлено: 30.11.03 01:53