Работа с динамични блокове памет в многозначна среда
| Информационни технологии | 2009-12-04 | 62 сваляния |
29. Работа с динамични блокове памет в многозначна среда. Видове. Предимства на използването на собствени dynamic heaps в рамките на процес или нишка.
В 16 битова среда имаме локално и глобално адресно пространство.
При 32 битова среда поради линейното пространство няма локално и глобално адресно пространство, а то е едно(2GB потребителско адресно пространство)
Има 2 функции за работа с хипове:
- С++ функции MFC- по универсални
- с API функции на ОС специфични и когато се гони бързо действие и големи обеми.
Има 2 вида хип:
- автоматично зареждане на приложението(по подразбиране)
- динамично зареждане формиране на собствен потребителски хип.
Някои препоръки за работа със собствения хип:
* в рамките на своя клас се създава собствен хип, така че методите на класа да работят със собствения хип. Предимствата са:
- безопасност другата нишка да се намеси в хипа.
- до голяма степен се избягва фрагментацията.
*в С++ може да се предефинира New и Delete - чрез предефинирането на New може да се направи оптимално заделяне на памет. Схема реализираща предефинирането на New е следната:
1) проверява дали е заделен локален хип с New ако не е го заделяме.
2) заедно със създаването се задава и брояч на New и Delete.
3) заделя се необходимия брой байтове, които се заделени
4) инкрементираме брояча
Схема реализираща предефинирането на Delete е следната:
1) освобождава блока
2) декремнтира брояча
3) проверява ако е 0 унищожава handler към файла
Има функция heapwin за създаден вече (от нас) хип. Големите блокове алокират собствен хип и връщат указател към тях. За малки блокове използват памет от вече алокиран хип.
За големи блокове след интензивно използване на Delete трябва ни чести интервали за викане heapwin, който всъшност освобождава тези блокове от хипа.
33. Архитектура документ/изображение: клас на приложението и документ шаблон. Структура на шаблона, насочване на съобщения и списък от шаблони в MDI приложение.
Document Template(документен шаблон)
Такъв има всяко приложение. Той е различен в MDI и SDI. Прави връзка между ( при това само по 1) documentwestern" style="margin-bottom: 0in; text-align: justify"> Съдържа:
-
документен низ (7 полета),
nMy_appMy_appnnnMy_app.DocumentnMy_app Document
-
Иконата на изображението
-
Менюто при активно изображение.
-
SDI документния шаблон се създава още в InitInstanse():
CSingleDocTemplate * pDocTemplate;
PDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS( CMyDoc), RUNTIME_CLASS( CMainFrame), RUNTIME_CLASS( CMyView));
AddDocTemplate(pDocTemplate);
// следват редове за създаване обектите от шаблона, показване рамката и изгледа. Включва се цикълът за обр. съобщения, като съобщенията се разделят към обектите - приложение, рамка, изглед, документ, прозорец (command routing).
Ако създадем приложение и кажем че разширението е .авс, то след InitInstance(),Windows знае че след като кликнем на файла .авс тотрябва ад се стартира нашето приложение.
Насочването на съобстенията за обработка:
Командните съобщения се насочват първо към изгледа и после към документа (той обработва само командхите съобщения), след което ако няма обработка той отива в Template ако и там няма , отиват във Frame, aкo и там няма обработка отиват в Application(обекта приложение) и там ако няма отиват в default (обработват се по подразбиране)
Ако MDI има повече документи и изображения :











CWinApp Document Templates


Documet Template list
Тагове от реферата: полането, многначна, многоз, окове, Dynamic, собств, ДИНАМИЧНИ, среда











