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.