Sobes.tech
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/free C/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.