Heap memory гэдэг нь санах ойд динамикаар өгөгдлийг хуваарилах зориулалттай компьютерийн санах ойн хэсэг юм. Энэ нь програмчлалын явцад хэрэгтэй үедээ санах ойг хуваарилж, ажлаа дууссаны дараа чөлөөлдөг. Stack санах ойтой харьцуулахад heap санах ой нь илүү их уян хатан бөгөөд хэмжээ нь динамик байдаг.
Heap Memory-ийн шинж чанарууд :
- Динамик хуваарьлалт: Програмчлалын явцад санах ой динамикаар хуваарилагддаг тул тухайн үедээ шаардлагатай хэмжээгээр ашиглах боломжтой.
- Том хэмжээтэй: Heap санах ой нь их хэмжээний өгөгдлийг хадгалах боломжтой бөгөөд нийт санах ойн хэмжээ нь үйлдлийн системээс хамаарна.
- Гараар удирдлага: Програм зохиогчид heap санах ойг хуваарилж, дахин чөлөөлөх ёстой (жишээ нь: Malloc, Free гэх мэт). Хэрэв удирдлага буруу хийгдвэл санах ойн цоорхой (Memory leak) үүсч болно.
- Харьцангуй удаан хандалт: Stack санах ойтой харьцуулахад heap санах ой руу хандах хурд харьцангуй удаан байдаг, учир нь санах ойн байршлыг тодорхойлох болон менежмент хийх нэмэлт үйлдлүүд хийгддэг.
- Амьдрах хугацаа(Lifetime): Heap санах ойд хуваарьлагдсан өгөгдөл програмын бүх хугацаанд хүчинтэй байж болно. Програм дуусах хүртэл санах ой чөлөөлөгдөөгүй байж болдог.
Heap memory хэрхэн ажилладаг вэ ?
- Динамик хуваарьлалт: Програмын явцад хэрэгтэй үед санах ойг new эсвэл malloc гэх мэт аргуудаар heap-ээс хуваарилдаг.
- Garbage collection (Хог хаягдлын цуглуулга): Зарим програмчлалын хэлнүүд (жишээ нь: Java) heap санах ойг автоматаар цэвэрлэдэг. Энэ процесс нь хэрэгцээгүй болсон өгөгдлийг илрүүлж, санах ойг чөлөөлдөг.
Heap санах ой нь их хэмжээний өгөгдлийг хадгалахад тохиромжтой боловч санах ойн удирдлагад их анхаарал хандуулах шаардлагатай.