Sobes.tech
Junior — Middle

Πώς οργανώνεται η δομή δεδομένων String στη λειτουργική μνήμη;

sobes.tech AI

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

Στη C#, μια συμβολοσειρά (string) είναι ένα αμετάβλητο (immutable) αντικείμενο που παρουσιάζεται στη μνήμη ως μια ακολουθία χαρακτήρων σε κωδικοποίηση UTF-16.

Η δομή δεδομένων String στη μνήμη περιλαμβάνει:

  • Ένα αντικείμενο στον διαχειριζόμενο σωρό (heap), που περιέχει:
    • Την κεφαλίδα του αντικειμένου (μεταδεδομένα για τον συλλέκτη απορριμμάτων και τον τύπο).
    • Το πεδίο μήκους της συμβολοσειράς (αριθμός χαρακτήρων).
    • Ένα πίνακα χαρακτήρων char[], όπου κάθε χαρακτήρας καταλαμβάνει 2 bytes (UTF-16).

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

Παράδειγμα:

string s = "Παράδειγμα";
// Στη μνήμη, το s αποθηκεύει ένα αντικείμενο με μήκος 9 και έναν πίνακα χαρακτήρων 'Π','α','ρ','ά','δ','ε','ι','γ','μ','α'

Επομένως, η συμβολοσειρά είναι ένα αντικείμενο με σταθερό μήκος και μια ακολουθία χαρακτήρων, βελτιστοποιημένο για ασφαλή και αποδοτική χρήση στο .NET.