Sobes.tech
Junior — Middle

როგორ ახსნიდით სტეკის კონცეფციას პროგრამირებაში?

sobes.tech AI

პასუხი AI-სგან

პროგრამირების დროს, heap (მოყრილი) არის მეხსიერების ტერიტორია, რომელიც გამოიყენება დინამიური მეხსიერების განაწილებისთვის პროგრამის შესრულების დროს. განსხვავებით სტაკისგან, სადაც მეხსიერება ავტომატურად განაწილდება და გათავისუფლდება LIFO პრინციპით, heap-ში პროგრამისტი თავად მართავს მეხსიერების განაწილებას და გათავისუფლებას (მაგალითად, C-ში malloc/free ან ავტომატური მართვის ენებში გარვიჯი კოლექტორის საშუალებით).

Heap საშუალებას აძლევს შექმნას ობიექტები და მონაცემთა სტრუქტურები, რომლის ზომა მხოლოდ შესრულების დროს არის ცნობილი, და ინახავს მათ მანამ, სანამ ისინი აღარ არის საჭირო. მაგალითად, iOS-ზე, Objective-C ან Swift ობიექტები ჩვეულებრივ განაწილებულია heap-ში, და მეხსიერების მართვა ხდება ARC-ის (ავტომატური მითითებების გამოთვლა) საშუალებით.

Swift-ის მაგალითი:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

let person = Person(name: "Иван") // ობიექტი შექმნილია heap-ში

აქ, Person ობიექტი შექმნილია heap-ში, და ცვლადი person შეიცავს ამ ობიექტის მითითებას.