Heap -da, statik bo'lmagan va mahalliy o'zgaruvchilar esa Stack
Oddiy massiv deklaratsiyasi va yangisidan foydalanish Oddiy massivni e'lon
Download 28.76 Kb.
|
Dinamik xotira
- Bu sahifa navigatsiya:
- Ishlash vaqtida yetarlicha xotira mavjud bolmasa-chi
- Chiqish
Oddiy massiv deklaratsiyasi va yangisidan foydalanish Oddiy massivni e'lon
qilish va new yordamida xotira blokini ajratish o'rtasida farq bor. Eng muhim farq shundaki, oddiy massivlar kompilyator tomonidan ajratiladi (agar massiv mahalliy bo'lsa, u holda funksiya qaytib kelganda yoki tugallanganda ajratiladi). Biroq, dinamik ravishda ajratilgan massivlar dasturchi tomonidan ajratilmagunicha yoki dastur tugatilgunga qadar har doim shu yerda qoladi. Ishlash vaqtida yetarlicha xotira mavjud bo'lmasa-chi? Ajratish uchun to'plamda yetarlicha xotira mavjud bo'lmasa, yangi so'rov std::bad_alloc turidagi istisnoni tashlash orqali muvaffaqiyatsizlikka uchraganligini bildiradi, agar “nothrow” yangi operator bilan ishlatilmasa, u holda NULL ko'rsatkichni qaytaradi (o'ting "Yangi operatorni istisno qilish" bo'limimaqola). Shuning uchun, dasturni ishlatishdan oldin new tomonidan ishlab chiqarilgan ko'rsatkich o'zgaruvchisini tekshirish yaxshi fikr bo'lishi mumkin. int *p = new(nothrow) int; if (!p) { cout << "Xotira ajratilmadi\n"; } o'chirish operatori Dinamik ravishda ajratilgan xotirani bo'shatish dasturchining mas'uliyati bo'lganligi sababli, dasturchilarga C++ tilida o'chirish operatori taqdim etiladi. Sintaksis: // Ko'rsatgich-o'zgaruvchi bilan ko'rsatilgan xotirani bo'shatish ko'rsatgich-o'zgaruvchini o'chirish ; Bu erda ko'rsatgich o'zgaruvchisi new tomonidan yaratilgan ma'lumotlar ob'ektiga ishora qiluvchi ko'rsatgichdir . Misollar: p o'chirish; o'chirish q; Ko'rsatkich o'zgaruvchisi tomonidan ko'rsatilgan dinamik ravishda ajratilgan massivni bo'shatish uchun quyidagi o'chirish shaklidan foydalaning : // Xotira blokini bo'shatish // ko'rsatgich-o'zgaruvchi bilan ko'rsatilgan delete[] pointer-variable; Misol: // Bu butun massivni bo'shatadi // p bilan ko'rsatilgan. oʻchirish[] p; CPP
Chiqish P qiymati: 29 r qiymati: 75,25 Xotira blokidagi qiymatni saqlash: 1 2 3 4 5 Vaqt murakkabligi: O(n), bu yerda n - berilgan xotira hajmi. Download 28.76 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling