|
1 билет Алгоритм ұғымы. Алгоритмнің анықталу жолдары. Алгоритмнің графигі
|
бет | 12/15 | Дата | 03.02.2022 | өлшемі | 55,45 Kb. | | #35492 |
| 698 algoritmЖадыны босату нәтижелігі.Сол жерде орналастырынған бүкіл үймелер мен мәліметтердің құрылымдары тек қана функция шақырушы мен босатыла алады.Сонымен қатар үйменің бүкіл бөлінген, бірақ жоғалтылған жадысы босатылады.Осылардың құндылық артықшылдықтары қосымшанің тәуелділігінде өзгері және көптеген бағдарламашылау үймелер процесімен және C кітапханасымен ғана қолданады.Қалай болған жағдайда да осы екі қызмет үймелерді құрып және жояды.Үймлердің бастапқы нөл бола алатын және әрқашан беттердің еселі сан мөлшеріне дейін дөңгелектенеді.Тағы алғашқы белгіленген үйменің физикалық жадысының көлемін анықтайды.Бағдарламаның бастапқы өлшемінің шекарасынан шығып кеткенде қосымша беттерді максималды мәнге дейін автоматты түрде белгілейді.Файл көшіргіш ішек қойылған қор болғандықтан, кейін қалдырған үйме мөлшері алдын ала белгілі белгілі болмаған оқиғаларға ыңғайлы болады. DwMax imum Size айнымалысының нөлдік мағынасы үйме мөлшерінің динамикалық үлкейінің шегін анықтайды. Үйме процессі сол сияқты динамикалық өседі.
HANDLE HeapCreate(DWORD f1 Options,
SIZE_T dwInitialSize, SIZE_T dwMaxixumSize);
Екі мөлшер аймағы DWORD емес, ал SIZE_T типіндей болады. SIZE_T типі компилятор жалаушаларына байланысты 32- разрядты немесе 64- разрядты белгісіз бүтін арқылы WIN32 немесе WIN64 анықталады. SIZE_T типі WIN64-ің мүмкіндіктерін қамтамасыз ету үшін еңгізген болатын. FlOptions айнымалысы екі жалаушаның комбинациясы болып табылады.HEAP_GENERATE_EXEPTION – сонымен қатар белгілеудің сәтсіз мүмкіншілігін шығарулар деп атайды. Олар құрылысты өңдеушімен өңделеді(StructuredExceptionHandler- SEH). HeapCreate функциясы өзімен өзі шығаруды шақырады; егер де осы жалауша орнатылған болса, ол сәтсіз жағдайында HeapAlloc сияқты функциясының шығаруын шақырады. HEAP_NO_SERIALIZE-Осы жалаушаның орнатуы кейбір кездерде тез жұмыс істеудің кішкене үлкеюін рұқсат етеді. DwMaximumSize туралы бірнеше сөз айтып кетейік.Егер де DwMaximumSize- дің мәні 0-ге тең болмаса, онда виртуалды мекен-жайлы аймақ бүкіл белгіленген аймақты белгілей алмаса, онда ол ерекшелінеді. Бұл үйменің максималды мөлшері, оны артпайтын деп атайды. Басқа жағынан қарасақ, егер де DwMaximumSize – дің мәні 0-ге тең болса, онда . Бұл шекара қолайлы иртуалы мекен-жайлы ауданымен белгіленеді. Соның жартысы басқа үймелерге және сақтау файлының аймағына беріледі.Бүкіл үймені жою үшін Heap Destroy қызметі қолданылады, ал Close Handle қызметі бәрін керек етпейтін дескрипторларын жоюға қолданады.BOOL Heap Destroy (HANDLE hHeapt);hHeaptайнымалысы HEAP Create қызметімен құрылған үймеге көрсету керек. Абайлаңыз үйме процесін жойып қойып жүрмеңіз (Get Process HEAP қызметімен алынған). Үймелерді жою сақтау файлында виртуады жадыда және физикалық жадыда кеңістікті боматады.Үймелерді жою – бұл тағы да әр жеке элементтердің қажеттіліксіз жоюын тез босатуыдың әдісі болып табылады, бірақ та Си ++ объектілерінің экземплиярлары жоюылмайды, сондықтан олардың деструктурасы шақырылмайды. Үйме жоюының арттықшылыққатары болмайды.
1.Құрылымда аралап шығу элементтерімен арналған кодты жазу қажеттілігі жоқ.2.Әрбір бөлек элементті босату қажеттілігі жоқ.3.Жүйе бүкіл мәлімет құрылғысы бір жүйелік шақырумен бостылғанша үймеге көмек беруге уақыты берілмейді.
Достарыңызбен бөлісу: |
|
|