Junior — Middle
Ποιες ενέργειες εκτελούνται στη στοίβα κατά την εκτέλεση μιας λειτουργίας σε ένα πρόγραμμα;
sobes.tech AI
Απάντηση από AI
Κατά την κλήση μιας συνάρτησης σε ένα πρόγραμμα Go (και στις περισσότερες γλώσσες με υποστήριξη για τη στοίβα κλήσεων), συμβαίνουν τα εξής:
- Αποθηκεύεται ένα πλαίσιο στοίβας (stack frame) — μια περιοχή μνήμης για την αποθήκευση τοπικών μεταβλητών, παραμέτρων και της διεύθυνσης επιστροφής.
- Αποθηκεύεται η διεύθυνση επιστροφής — ώστε μετά το τέλος της συνάρτησης, το πρόγραμμα να συνεχίσει από το σωστό σημείο.
- Οι παράμετροι της συνάρτησης αντιγράφονται — οι τιμές των επιχειρημάτων μεταφέρονται στο νέο πλαίσιο.
- Οι τοπικές μεταβλητές αρχικοποιούνται — δεσμεύεται μνήμη και, αν χρειάζεται, τίθενται αρχικές τιμές.
Μετά την εκτέλεση της συνάρτησης, το πλαίσιο της στοίβας διαγράφεται και ο έλεγχος επιστρέφει στη διατηρημένη διεύθυνση.
Παράδειγμα (απλοποιημένο):
func add(a, b int) int {
sum := a + b
return sum
}
func main() {
result := add(2, 3)
fmt.Println(result) // 5
}
Κατά την κλήση της add, δημιουργείται ένα πλαίσιο στη στοίβα με τις παραμέτρους a=2, b=3, τη τοπική μεταβλητή sum και τη διεύθυνση επιστροφής στο main.