Что остается после выгрузки формы?

Для неординарных вопросов. Если вы опытный программист, попавший в трудную ситуацию, — вам сюда.

Модератор: gaidar

Правила форума
Этот раздел не предназначен для того, чтобы вы адресовали свою проблему профессионалам.
Этот раздел предназначен для профессионалов, которые столкнулись с проблемой и не могут решить ее самостоятельно.
Если вы считаете себя профессионалом, а свою проблему сложной — вам сюда.
Если модератор посчитает, что вы ошиблись, то на первый раз он перенесет ваше сообщение в основной раздел без последствий для автора. Во второй раз тема будет закрыта, а автору будет выписано нарушение. В третий раз автор будет забанен.
BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Что остается после выгрузки формы?

Сообщение BV » 18.01.2007 (Чт) 20:23

Теория:

MSDN писал(а):When a form is unloaded, all controls placed on the form at run time are no longer accessible. Controls placed on the form at design time remain intact; however, any run-time changes to those controls and their properties are lost when the form is reloaded. All changes to form properties are also lost. Accessing any controls on the form causes it to be reloaded.

Note When a form is unloaded, only the displayed component is unloaded. The code associated with the form module remains in memory.


Из этого следует, что если форма не имеет ни одного контрола, созданного в "design time", и не содержит в своем модуле кода - она выгрузится полностью. Верно?

Что ж. На практике выходит несколько иначе.
Вот простой код:

Код: Выделить всё
Option Explicit

Private Sub Command1_Click()
    Load Form2
End Sub

Private Sub Command2_Click()
    Load Form3
End Sub

Private Sub Command3_Click()
    Unload Form2
End Sub

Private Sub Command4_Click()
    Unload Form3
End Sub


Пример в аттаче.

Если последовательно загрузить и выгрузить обе формы, то размер памяти, занимаемый процессом, увеличится на 1.4 МБ. Собственно, откуда эта разница?
Вложения
VBForms.rar
(962.91 Кб) Скачиваний: 249
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.01.2007 (Чт) 20:33

Ты хоть представляешь себе, что ты меряешь? :roll:
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 18.01.2007 (Чт) 20:34

Как что? Память, занимаемую процессом.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.01.2007 (Чт) 20:59

Занимаемую им где?


Старое упражнение на эту тему: если свернуть окно, цифирька в таскменеджере резко упадёт. Внимание: куда делось всё то, что лежало в "исчезнувшей" памяти?
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 18.01.2007 (Чт) 22:31

Ага, разобрались :)
Вопрос закрыт.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 19.01.2007 (Пт) 10:02

А можно поподробнее? :)
Подпись находится в стадии разработки...

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Сообщение Space » 04.02.2007 (Вс) 8:27

да, просветите новичков!

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 05.02.2007 (Пн) 13:15

Реально используемая и отображаемая в таскмане память - 2 разные вещи...
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.02.2007 (Пн) 14:42

Раз никто мои письмена тут рекламировать не стал, буду делать это сам :-)
http://bbs.vbstreets.ru/viewtopic.php?t=28535
Изображение


Вернуться в Раздел для Профессионалов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList