Сайфиев ж. Ф. С++ тилига кириш услубий қўлланма
Стекли ва объектлар ўртасида динамик тақсимланувчи хотира
Download 3.45 Mb.
|
cpp buxoro
Стекли ва объектлар ўртасида динамик тақсимланувчи хотира.Олдинги мавзуларда хотирани 5 та соҳага ажратган эдик: Глобал ўзгарувчилар соҳаси. Бўш ёки объектлар ўртасида динамик тақсимланувчи хотира. Регистрли хотира. Дастур сегменти. Стекли хотира. Локал ўзгарувчилар ва функция параметрлари стекли хотирада жойлаштирилади. Дастур кодлари эса дастур сегментида жойлашади. Глобал ўзгарувчилар хотиранинг глобал ўзгарувчилар соҳасида жойлашади. Регистрли хотира дастурнинг ички хизматчи маълумотларини сақлаш учун хизмат қилади. Хотиранинг қолган қисми эса турли объектлар ўртасида динамик тарзда тақсимланувчи хотира соҳаси, яъни бўш хотирадан иборатдир. Локал ўзгарувчиларнинг ўзига хос хусусияти шундан иборатки, дастур бошқаруви улар тегишли функциядан чиқиши билан улар локал ўзгарувчилар учун ажратилган хотира соҳаси бўшатилади, яъни бу ўзгарувчилар ўчирилади. Глобал ўзгарувчилар эса дастур ишга туширилгандан бошлаб токи ўз ишини якунлагунча хотирадан ўчирилмайди, дастурнинг ихтиёрий жойидан уларнинг қийматидан фойдаланишимиз мумкин бўлади. Лекин бу дастур матни тушунарлилигини анча мураккаблаштиради. Локал ва глобал ўзгарувчилар ўзига хос камчиликларга эга. Локал ўзгарувчилардан фақатгина у эълон қилинган функция ишлаб турганда фойдаланиш мумкин бўлса, глобал ўзгарувчилар дастур ишини бошлагандан токи охиригача глобал ўзгарувчилар соҳасидан жой олиб туради. Динамик хотирадан фойдаланиш бу муаммоларни бутунлай ҳал қилади. Динамик хотирани ахборотлар ёзилган ячейкаларнинг номерланган тўплами сифатида қараш мумкин. Стек ўзгарувчиларидан фарқли равишда бу хотира ячейкаларини номлаш мумкин эмас. Уларга мурожаат керакли ячейка адресини ўзида сақлаган кўрсаткичлар орқали амалга оширилади. Маълумки, стек ўзгарувчилари функция ишини тугатиши билан тозаланади. Натижада, барча локал ўзгарувчилар қиймати билан биргаликда хотирадан ўчирилади. Стекдан фарқли равишда динамик хотира дастур ишини тугатгунга қадар бўшатилмайди, бу хотирани бўшатиш билан дастурчиларнинг ўзлари шуғулланишлари лозим. Динамик хотиранинг яна бир муҳим имконияти шундан иборатки, унинг учун ажратилган хотира соҳаси бўшатилмагунча бу жойдан фойдаланиш мумкин эмас. Яъни, бирор бир қийматни динамик хотирага ёзсак, токи уни у ердан ўчирмагунимизча бу ўзгарувчи учун ажратилган жой бўшатилмайди. Шунинг учун, динамик хотира соҳаси функция билан ишлаш жараёнида ажратилган бўлса, функция ишини тугатгандан кейин ҳам биз ундан бемалол фойдаланишимиз мумкин бўлади. Хотирани динамик тарзда белгилашни глобал ўзгарувчиларни қўллашдан яна бир устунлиги ундаги маълумотларга фақатгина унинг кўрсаткичига мурожаат қилиш имконига эга бўлган функциялар орқалигина мурожаат қилиш мумкин. Кириш имконининг бундай тарзда ташкил этилиши жорий маълумотларни ўзгартирилишини қатъий назорат қилиш имкониятини беради. Бундай услубда ишлаш учун биринчи навбатда динамик хотира соҳаси ячейкаларига кўрсаткич тузиш лозим. Бу қандай амалга оширилишини навбатдаги қисмларда кўриб чиқамиз. Download 3.45 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling