Sobes.tech
Junior — Middle

Jak jest zorganizowana struktura danych String w pamięci operacyjnej?

sobes.tech AI

Odpowiedź od AI

W C# łańcuch (string) jest obiektem niezmiennym (immutable), który w pamięci jest reprezentowany jako sekwencja znaków w kodowaniu UTF-16.

Struktura danych String w pamięci obejmuje:

  • Obiekt na zarządzanym stercie (heap), który zawiera:
    • Nagłówek obiektu (metadane dla zbieracza śmieci i typu).
    • Pole długości łańcucha (liczba znaków).
    • Tablicę znaków char[], gdzie każdy znak zajmuje 2 bajty (UTF-16).

Ponieważ łańcuchy są niezmienne, przy zmianie tworzony jest nowy obiekt, a stary pozostaje w pamięci do czasu, aż zostanie usunięty przez garbage collector.

Przykład:

string s = "Przykład";
// W pamięci s przechowuje obiekt o długości 7 i tablicę znaków 'P','r','z','y','k','ł','a','d'

Zatem łańcuch to obiekt o stałej długości i sekwencji znaków, zoptymalizowany do bezpiecznego i wydajnego użycia w .NET.