Junior — Middle
Kuidas on organiseeritud String andmestruktuur operatiivmälus?
sobes.tech AI
Vastus AI-lt
C#-s on string-tüüp, mis on muutmatu (immutable) objekt ning mis esitatakse mälus UTF-16 kodeeringusena sümbolijärjendina.
String andmestruktuur mälus hõlmab:
- Objekt juhitaval virnal (heap), mis sisaldab:
- Objekti päist (metaandmed prügikoristaja ja tüübi jaoks).
- Stringi pikkuse välja (sümbolite arv).
- Sümbolite massiivi
char[], kus iga sümbol võtab 2 baiti (UTF-16).
Kuna stringid on muutumatud, siis iga muudatuse korral luuakse uus objekt, vana aga jääb mällu kuni prügikoristaja selle eemaldab.
Näide:
string s = "Näide";
// Mälus hoiab s objekti pikkusega 5 ja sümbolite massiivi 'N','ä','i','d','e'
Seega on string objekt fikseeritud pikkusega ja sümbolijärjendiga, optimeeritud turvaliseks ja tõhusaks kasutamiseks .NET-is.