Sobes.tech
Junior — Middle

როგორ არის ორგანიზებული მეხსიერების სტრუქტურა მონაცემების შენახვისთვის პროგრამაში?

sobes.tech AI

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

iOS-ში, პროგრამაში მონაცემების შენახვის მეხსიერების სტრუქტურა ჩვეულებრივ ასეა ორგანიზებული:

  • სტეკი (Stack): ინახავს ადგილობრივ ცვლადებს და ფუნქციების გამოძახებებს. სწრაფი მეხსიერების განაწილება და გათავისუფლება.
  • ჰიპი (Heap): დინამიური მეხსიერების განაწილება ობიექტებისა და სტრუქტურებისთვის, რომლებიც უფრო ხანგრძლივია, ვიდრე ფუნქციის გამოძახება.
  • მონაცემთა სეგმენტი: სტატიკური და გლობალური ცვლადებისთვის.
  • კოდის სეგმენტი: პროგრამის მანქანური კოდისათვის.

მაგალითად, როდესაც ქმნით კლასის ობიექტს Swift ან Objective-C-ში, მისი მეხსიერება განაწილებულია ჰიპზე, და ობიექტზე მიმთითებელი ბმული ინახება სტეკზე. iOS-ის ავტომატური მეხსიერების მართვა განხორციელებულია ARC (Automatic Reference Counting)-ის მეშვეობით, რომელიც აკონტროლებს ობიექტებზე მიმთითებლების რაოდენობას და გათავისუფლებს მეხსიერებას, როდესაც ის აღარ არის საჭირო.

მაგალითი:

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

func createPerson() {
    let person = Person(name: "Ivan") // ობიექტი ჰიპზე, მიმთითებელი სტეკზე
    print(person.name)
} // ფუნქციიდან გამოსვლის შემდეგ, მიმთითებელი წაშლილია, ARC გათავისუფლებს ობიექტს, თუ სხვა მიმთითებლები არ არსებობს