4.3 Xavfsizlik turi
har bir ob'ekt va ko'rsatkich uchun haqiqiylikni saqlash orqali xotira xavfsizligi.
Ikki nosozlik holati mavjud: yoki hudud ajratilgan va versiya
kichikroq (0) yoki maydon yangi ob'ektga qayta taqsimlangan va
versiya kattaroq. Ikkala xato holati ham istisnoga olib keladi va
dasturni to'xtatadi.
Xavfsiz turdagi kod faqat kirish huquqiga ega bo'lgan to'g'ri
yozilgan ob'ektlarga kiradi. Adabiyot guruhlari xavfsizlikni turli
sinflarga ajratadi: kuchli yoki zaif terilgan (yashirin turdagi konvertatsiya bilan).
Tur tizimi ortogonal ravishda statik yoki dinamik bo'lishi mumkin.
Machine Translated by Google
Tur xavfsizligi - bu har bir ajratilgan xotira ob'ektiga bog'langan
turni tayinlaydigan dasturlash tili tushunchasi . Yozilgan xotira
ob'ektlari faqat tegishli turni kutadigan dastur joylarida ishlatilishi
mumkin. Kasting operatsiyalari ob'ektni boshqa turga ega deb
talqin qilish imkonini beradi. Meros zanjiri bo'ylab kastingga ruxsat
beriladi . Yuqoriga siljishlar (yuqoriga ko'tarilishlar) turni ildiz
ob'ektiga yaqinlashtiradi, tur umumiyroq bo'ladi , pastga
yo'naltirilgan (pastga) esa ob'ektni kichik turga ixtisoslashtiradi. C
uchun, tipdagi panjara to'liq bog'langan, har qanday ko'rsatgich
turi boshqa istalgan ko'rsatkich turlariga o'tkazilishi mumkin,
buning haqiqiyligi dasturchiga tegishli.
C++ da bir nechta kasting operatsiyalari mavjud. Eng keng
tarqalganlari statik va dinamik castlardir. Static cast
static_cast(Object) kompilyatsiya vaqtini tekshirishga
olib keladi, bunda kompilyator Ob'ekt turi qandaydir tarzda
ToClass bilan bog'liqligini kafolatlaydi, hech qanday ish vaqti
tekshiruvini o'tkazmaydi. dynamic_cast(Object) ish
vaqtini tekshirishga olib keladi, lekin Runtime Type Information
(RTTI) talab qiladi va faqat polimorf sinflar uchun mumkin (ya'ni,
ular ob'ektning o'zida sinfni yagona identifikatsiya qiluvchi vtable
ko'rsatkichiga ega bo'lishi kerak). Ish vaqtini tekshirish tufayli,
bunday turdagi quyma ishlashga qo'shimcha xarajatlarga olib keladi.
4 Xotira va tur xavfsizligi
massiv indeksi mukammal turdagi xavfsiz dasturda massiv chegaralaridan
tashqariga ishora qilishi mumkin , bu esa xotira xavfsizligi buzilishiga
olib keladi. Xuddi shunday, xotira xavfsizligi turi xavfsizligini anglatmaydi ,
chunki char * massivi ma'lum bir turdagi ob'ekt sifatida noto'g'ri talqin
qilinishi mumkin .
41
Machine Translated by Google
12
15
28
13
9
14
2
22
6
33
17
25
18
Do'stlaringiz bilan baham: |