Middle
Proqramlaşdırma və test kontekstində yığın nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Proqramlaşdırma kontekstində yığın (Heap), proqramın icrası zamanı obyektləri saxlamaq üçün ayrılan dinamik yaddaş sahəsidir; bu sahənin ölçüsü tərtib mərhələsində məlum olmaya bilər.
Test baxımından, yığını anlamaq vacibdir, çünki:
- Performans testləri: Yığın içində yaddaş sızmaları proqramın işləməsini yavaşlada və ya çökməsinə səbəb ola bilər.
- Stabillik testləri: Yığın daşması (Heap Overflow) və ya yaddaşın düzgün idarə olunmaması (məsələn, iki dəfə sərbəst buraxma) segmentasiya xətalarına səbəb ola bilər.
- Hata ayıklama: Yığın məzmununun analizi obyektlərin düzgün olmayan vəziyyətlərinin və ya yaddaş sızmalarının səbəblərini tapmağa kömək edə bilər.
- Alətlərin istifadəsi: Profil və yaddaş analizi alətləri (məsələn, Valgrind, Memory Analyzer for Java) aktiv şəkildə yığın haqqında məlumatla işləyir.
Yığın xüsusiyyətləri:
- Dinamik ayırma: Yaddaş proqramçı tərəfindən açıq şəkildə ayrılır və sərbəst buraxılır (məsələn,
malloc/freeC/C++-də) və ya avtomatik yaddaş toplayıcı tərəfindən (məsələn, Java, Python-də). - Qeyri-təşkilatlanmış: Yığınla müqayisədə, elementlər ardıcıl saxlanmır; onların ünvanları yayılmış ola bilər.
- Ömür: Yığın obyektləri, onlara istinadlar olduğu müddətcə və ya açıq şəkildə sərbəst buraxılana qədər yaşayır.
Test zamanı aşkarlanabiləcək yığınla əlaqəli problemlər nümunələri:
- Yaddaş sızmaları: Yığın içində ayrılmış yaddaş artıq istifadə olunmur, lakin sərbəst buraxılmayıb, bu da mövcud yaddaşın tədricən tükənməsinə səbəb olur.
- İki dəfə sərbəst buraxma: Eyni yaddaş blokunun bir neçə dəfə sərbəst buraxılması.
- Sərbəst buraxmadan sonra istifadə: Sərbəst buraxılmış yaddaşa giriş cəhdləri.
- Yığın daşması: Yığın içində ayrılmış yaddaş blokunun sərhədlərindən kənara məlumat yazılması, bu da qonşu məlumatları və ya yığın meta məlumatlarını üst-üstə sala bilər.