A gar tashqi obyektga shu obyekt ta ’riflangan blokdan yuqorida yoki


Download 27.43 Kb.
Pdf ko'rish
bet1/2
Sana26.10.2023
Hajmi27.43 Kb.
#1725044
  1   2
Bog'liq
Dinamik 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