Sobes.tech
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.