Comprendre le memory layout en Rust : stack, heap et le fonctionnement du Vec
Comprendre le memory layout en Rust : stack, heap et le fonctionnement du Vec
Cette vidéo explique le memory layout (disposition mémoire) en Rust, essentiel pour comprendre la performance. Contrairement à une idée reçue, une variable n'est pas toujours sur la pile (stack) ; elle peut pointer vers des données dynamiques sur le tas (heap).
Le cas typique est le Vec (vecteur), un tableau dynamique. Sur la pile, le Vec ne stocke que trois informations : un pointeur vers les données, sa longueur actuelle et sa capacité (l'espace alloué). Les éléments eux-mêmes sont stockés de manière continue sur le tas.
Exemple : Si on crée let v = vec![1, 2, 3];, la pile contient le pointeur, la longueur (3) et la capacité (3). Le tas contient les valeurs 1, 2, 3. Pour ajouter un élément, on met à jour la longueur et la capacité sur la pile, et on ajuste le pointeur si la capacité doit augmenter. Cela permet de redimensionner la structure sans recopier l'ensemble des données à chaque modification.