1 – dars. C++ Dasturlash tilining kelib chiqishi xaqida ma’lumot



Download 4,47 Mb.
bet27/89
Sana15.04.2022
Hajmi4,47 Mb.
#553102
1   ...   23   24   25   26   27   28   29   30   ...   89
Bog'liq
C kitob TAYYOR

26 – DARS. DINAMIK HOTIRA.

Dinamik hotira bu dastur bajarilishi jarayonida ajratiladigan hotiradir. Dinamik hotira ajratilgandan so’ng to free() funktsiyasi tomonidan bo’shatilmaguncha saqlanadi.


Agar dinamik hotira dastur bajarilishi tugaguncha bo’shatilmagan bo’lsa, avtomatik ravishda dastur tugaganda bo’shatiladi. Shunga qaramay ajratilgan hotirani dasturda mahsus bo’shatish dasturlashning sifatini oshiradi.
Dastur bajarilish davomida ajratilgan hotira qismiga murojaat imkoniyati shu qismga adreslovchi ko’rsatkichga bog’likdir. Shunday qilib, biror blokda ajratilayotgan dinamik hotira bilan ishlashning quyidagi uchta varianti mavjuddir:
• Ko’rsatkich avtomatik hotira turiga kiruvchi lokal ob'ekt. Bu holda ajratildgan hotiraga blokdan tashqarida murojaat qilib bo’lmaydi, shuning uchun blokdan chiqishda bu hotirani bo’shatish lozimdir.
• Ko’rsatkich avtomatik hotira turiga kiruvchi lokal statitk ob'ekt. Blokda bir marta ajratilgan dinamik hotiraga, blokka har bir qayta kirilganda ko’rsatkich orqali murojaat qilish mumkindir. Hotirani blokdan foydalanib bo’lgandan so’ng bo’shatish lozimdir.
• Ko’rsatkich blokka nisbatan global ob'ektdir. Dinamik hotiraga ko’rsatkich ko’rinuvchi hamma bloklardan murojaat qilish mumkin.Hotirani fakat undan foydalanib bo’lgandan so’ng b’oshatish lozimdir.
Ikkinchi variantga misol keltiramiz, bu misolda dinamik hotira ob'ekti ichki statik k’orsatkich bilan bog’likdir:
Include
Include
Void dynamo(void)
{
static char *uc=NULL;
if (uc==NULL)
{
uc=(char*)malloc(1);
*uc=’A’;
}
printf(“\t%c”,*uc);
(*uc)++;
return;
};
void main()
{
int I;
for (i=0;i<5;i++)
dynamo();
};
Dastur bajarilishi natijasi:
A B C D E
Bu dasturning kamchiligi ajratilgan hotira free() funktsiyasi yordamida bo’shatilmasligidir. Keyingi dasturda dinamik hotiraga ko’rsatkich global ob'ektdir:
Include
Include
char *uk=NULL;
void dynam1(void)
{
printf(“\t%c”,*uc);
(*uk)++;
return;
};
void main()
{
int I;
uk=(char*)malloc(1);
*uk=’A’;
for (i=0;i<5;i++)
{
dynam1();
(*uk)++;
}
free(uk);
};
Dastur bajarilishi natijasi:
A C E G I
Dinamik ob'ekt asosiy dasturda yaratilib, u ko’rsatkich bilan bog’likdir. Dasturda boshlang’ich ‘A’ qiymatga ega bo’ladi. Ko’rsatkich global bo’lgani uchun dinamik ob'ektga main() va dynamic() funktsiyalarida murojaat qilish mumkin. Dinamik hotiraga ajratilgandan so’ng shu ob'ekt bilan bog’lik ko’rsatkich tashqi ob'ekt sifatida ta'riflangan ihtiyoriy blokda murojaat qilish mumkin.



Download 4,47 Mb.

Do'stlaringiz bilan baham:
1   ...   23   24   25   26   27   28   29   30   ...   89




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish