Sobes.tech
Junior — Middle

La quantité de mémoire disponible ou la capacité change-t-elle lorsque la taille d'une tranche est réduite dans un langage de programmation?

sobes.tech IA

Réponse de l'IA

Dans le langage Go, une tranche (slice) est une structure qui contient un pointeur vers un tableau, une longueur et une capacité.

Lorsqu'on réduit la longueur d'une tranche (par exemple, en utilisant slice = slice[:newLength]), seule la longueur change — le nombre d'éléments accessibles en lecture et écriture. La capacité et la mémoire allouée restent inchangées, car la tranche fait toujours référence au même tableau.

Si vous souhaitez réduire la capacité et libérer de la mémoire, il faut créer une nouvelle tranche et y copier les éléments nécessaires, par exemple :

oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])

Ainsi, réduire la longueur d'une tranche ne modifie pas la capacité ni la mémoire allouée, donc la mémoire n'est pas libérée automatiquement.