Sobes.tech
Junior — Middle

Πώς θα εξηγούσατε την έννοια της στοίβας στον προγραμματισμό;

sobes.tech AI

Απάντηση από AI

Στον προγραμματισμό, η ουρά (heap) είναι μια περιοχή μνήμης που χρησιμοποιείται για δυναμική κατανομή μνήμης κατά τη διάρκεια εκτέλεσης του προγράμματος. Σε αντίθεση με την στοίβα (stack), όπου η μνήμη κατανεμόταν και απελευθερωνόταν αυτόματα σύμφωνα με την αρχή LIFO, στην ουρά ο προγραμματιστής ελέγχει την κατανομή και απελευθέρωση της μνήμης (π.χ., με malloc/free στη C ή μέσω συλλέκτη απορριμμάτων σε γλώσσες με αυτόματη διαχείριση).

Η ουρά επιτρέπει τη δημιουργία αντικειμένων και δομών δεδομένων των οποίων το μέγεθος είναι γνωστό μόνο κατά την εκτέλεση και να τα διατηρεί μέχρι να μην χρειάζονται πλέον. Για παράδειγμα, στο iOS, τα αντικείμενα Objective-C ή Swift συνήθως κατανεμούνται στην ουρά, και η διαχείριση μνήμης γίνεται μέσω ARC (Αυτόματη Καταμέτρηση Αναφορών).

Παράδειγμα σε Swift:

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

let person = Person(name: "Иван") // το αντικείμενο δημιουργείται στην ουρά

Εδώ, το αντικείμενο Person δημιουργείται στην ουρά, και η μεταβλητή person περιέχει μια αναφορά σε αυτό το αντικείμενο.