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 გათავისუფლებს ობიექტს, თუ სხვა მიმთითებლები არ არსებობს