A gar tashqi obyektga shu obyekt ta ’riflangan blokdan yuqorida yoki
Download 27.43 Kb. Pdf ko'rish
|
1 2
Bog'liqDinamik xotira
- Bu sahifa navigatsiya:
- 2-fay Ida: E X T E R N IN T SP; E X T E R N DO UBLE VAL[J; D O UBLE P U S H (F )... D O U BLE P O P ( ) ... C L E A R Q ... Dinam ik xotira.
A gar tashqi obyektga shu obyekt ta ’riflangan blokdan yuqorida yoki boshqa faylda joylashgan blokdan m urojaat qilinishi kerak b o isa , bu obyekt extern xizm atchi so‘zi yordam ida ta’riflanishi lozim. Shuni aytish lozim ki, extern xizm atchi so'zi yordam ida ta’riflanganda initsializatsiya qilish yoki chegaralarni ko‘rsatish m um kin emas. extern double summ a[]; extern char D _phil []; extern long M; M isol uchun VAL v a SP o‘zgaruvchilari bitta faylda, bu o‘zgaruvchi- larga m urojaat qiluvchi PUSH, POP i C LEA R funksiyalari boshqa faylda ta’riflangan b o isin . Bu holda bu fayllar orasidagi b o g liq lik n i ta’m inlash uchun quyidagi ta ’riflar lozim: 1-faylda: * IN T S P = 0 ; /* STACK PO IN TER */ DO UBLE VAL[MAXVAL]; /* V A L U E STACK */ 2-fay Ida: E X T E R N IN T SP; E X T E R N DO UBLE VAL[J; D O UBLE P U S H (F )... D O U BLE P O P ( ) ... C L E A R Q ... Dinam ik xotira. D inam ik xotira - bu dastur bajarilishi jarayonida ajra- tiladigan xotiradir. D inam ik xotira malloc funksiyasi orqali ajratilgandan so‘ng, to free funksiyasi tom onidan bo‘shatilm aguncha saqlanadi. Quyidagi m isolda yakka obyektga xotira ajratiladi: int*pint=(int*)m alloc(sizeof(int)) Bu yerda m alloc funksiyasi int turidagi nom siz obyektga xotirani ajratib beradi ham da yaratilgan obyekt adresini qaytarib beradi. Bu adres pint ko‘rsatkichiga joylashtiriladi. Ushbu nom siz obyekt ustidagi barcha hatti- harakatlar shu ko‘rsatkich bilan ishlash orqali am alga oshiriladi, chunki dinam ik obyekt bilan to‘g ‘ridan to‘g‘ri ish olib borish (m anipulatsiyalar o‘tkazish) m um kin emas. A gar dinam ik xotira d astu r bajarilishi tugaguncha bo‘shatilm agan b o isa , avtom atik ravishda d astu r tugaganda bo‘shatiladi. Shunga qaram ay ajratilgan xotirani dasturda m axsus bo‘shatish dasturlashning sifatini oshiradi. 140 D inam ik obyekt kerak bo‘lm ay qoiganda, unga ajratilgan xotirani to‘g‘ridan to‘g‘ri bo‘shatish free funksiyasi yordam ida am alga oshiriladi: free(pint); D astur bajarilishi davom ida ajratilgan xotira qism iga m urojaat im- koniyati shu qism ga adreslovchi ko‘rsatkichga bog'liq. Shunday qilib, biror blokda ajratilayotgan dinam ik xotira bilan ishlashning quyidagi uchta varianti mavjud: • ko'rsatkich avtom atik xotira turig a kiruvchi lokal obyekt. B u holda ajratiladigan xotiraga blokdan tashqarida m urojaat qilib boim aydi, shuning uchun blokdan chiqishda bu xotirani bo‘shatish lozim; • ko‘rsatkich avtom atik xotira turiga kiruvchi lokal statik obyekt. Blokda bir m arta ajratilgan dinam ik xotiraga, blokka h ar bir qayta kirilganda ko‘rsatkich orqali m urojaat qilish m um kin. Xotirani blokdan foydalanib b o lg a n d a n so‘ng bo'shatish lozim; • ko‘rsatkich blokka nisbatan global obyekt. D in am ik xotiraga ko‘r- satkich ko‘rinuvchi h am m a bloklardan m urojaat qilish m um kin. X otirani faqat u n d an foydalanib b o ig a n d a n so‘ng bo'shatish lozim. Ikkinchi variantga m isol keltiram iz, bu m isolda dinam ik xotira obyekti ichki statik ko‘rsatkich bilan bog‘liq: Download 27.43 Kb. Do'stlaringiz bilan baham: |
1 2
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling