Junior — Middle
Jak odbywa się rezerwacja pamięci dla slice'a w języku programowania?
sobes.tech AI
Odpowiedź od AI
W języku Go, slice to struktura zawierająca wskaźnik na tablicę, długość i pojemność. Podczas tworzenia slice'a pamięć dla elementów jest rezerwowana w tablicy, na którą wskazuje.
Gdy slice jest tworzony za pomocą funkcji make, na przykład make([]int, length, capacity), alokowana jest tablica o podanej pojemności. Jeśli podczas dodawania elementów pojemność zostanie przekroczona, Go automatycznie alokuje nową, większą tablicę, kopiuje dane i aktualizuje wskaźnik slice'a.
Przykład:
s := make([]int, 0, 5) // slice o długości 0 i pojemności 5
s = append(s, 1, 2, 3) // dodajemy elementy
W ten sposób rezerwacja pamięci odbywa się z wyprzedzeniem dla zadanej pojemności, co zwiększa wydajność przy dodawaniu elementów.