Junior — Middle
Πώς οργανώνεται η δομή δεδομένων String στη λειτουργική μνήμη;
sobes.tech AI
Απάντηση από AI
Στη C#, μια συμβολοσειρά (string) είναι ένα αμετάβλητο (immutable) αντικείμενο που παρουσιάζεται στη μνήμη ως μια ακολουθία χαρακτήρων σε κωδικοποίηση UTF-16.
Η δομή δεδομένων String στη μνήμη περιλαμβάνει:
- Ένα αντικείμενο στον διαχειριζόμενο σωρό (heap), που περιέχει:
- Την κεφαλίδα του αντικειμένου (μεταδεδομένα για τον συλλέκτη απορριμμάτων και τον τύπο).
- Το πεδίο μήκους της συμβολοσειράς (αριθμός χαρακτήρων).
- Ένα πίνακα χαρακτήρων
char[], όπου κάθε χαρακτήρας καταλαμβάνει 2 bytes (UTF-16).
Επειδή οι συμβολοσειρές είναι αμετάβλητες, κάθε αλλαγή δημιουργεί ένα νέο αντικείμενο, ενώ το παλιό παραμένει στη μνήμη μέχρι να συλλεχθεί από τον συλλέκτη απορριμμάτων.
Παράδειγμα:
string s = "Παράδειγμα";
// Στη μνήμη, το s αποθηκεύει ένα αντικείμενο με μήκος 9 και έναν πίνακα χαρακτήρων 'Π','α','ρ','ά','δ','ε','ι','γ','μ','α'
Επομένως, η συμβολοσειρά είναι ένα αντικείμενο με σταθερό μήκος και μια ακολουθία χαρακτήρων, βελτιστοποιημένο για ασφαλή και αποδοτική χρήση στο .NET.