Gestion de la mémoire en C++ : pointeurs, références et allocation dynamique
Ce que tu dois retenir
Une variable vit à une adresse mémoire unique, comme vous vivez à une adresse postale.
Un pointeur est comme un papier sur lequel on écrit l'adresse d'une maison : il indique où trouver la variable.
Une référence est un surnom : si vous appelez quelqu'un par son surnom, vous parlez à la même personne.
new réserve de la mémoire sur le tas, et delete la libère : c'est un contrat à respecter.
Teste-toi
◆ Teste-toi
1. Que contient un pointeur en C++ ?
Voir la réponseMasquer
Réponse : B — B. L'adresse d'une variable
Un pointeur stocke une adresse mémoire, pas la valeur elle-même.
2. Quel opérateur permet d'obtenir l'adresse d'une variable ?
Voir la réponseMasquer
Réponse : B — B. &
L'opérateur & (esperluette) renvoie l'adresse d'une variable.
3. Quelle affirmation est vraie concernant les références en C++ ?
Voir la réponseMasquer
Réponse : C — C. Une référence doit être initialisée à la déclaration
Une référence est un alias et doit être initialisée immédiatement, elle ne peut pas être nulle ni réaffectée.
4. Que fait l'opérateur new dans le code : int* p = new int; ?
Voir la réponseMasquer
Réponse : B — B. Il alloue de la mémoire pour un entier et renvoie son adresse
new alloue dynamiquement un espace pour un entier sur le tas et retourne un pointeur vers cet espace.
5. Quel est le risque principal si on oublie d'appeler delete après un new ?
Voir la réponseMasquer
Réponse : B — B. Une fuite mémoire : la mémoire reste occupée
Sans delete, la mémoire allouée n'est jamais libérée, ce qui peut épuiser la mémoire disponible (fuite mémoire).
6. Quelle est la différence entre un pointeur et une référence ?
Voir la réponseMasquer
Réponse : A — A. Un pointeur peut être réaffecté, une référence non
Un pointeur peut pointer vers différentes variables au cours de sa vie, alors qu'une référence est liée à une seule variable dès sa création.
7. Que signifie déréférencer un pointeur ?
Voir la réponseMasquer
Réponse : B — B. Obtenir la valeur stockée à l'adresse pointée
Déréférencer avec * permet d'accéder à la valeur contenue à l'adresse mémoire stockée dans le pointeur.
8. Dans quel cas l'allocation dynamique est-elle particulièrement utile ?
Voir la réponseMasquer
Réponse : B — B. Quand la taille des données dépend de l'exécution (ex: saisie utilisateur)
L'allocation dynamique est utile quand on ne connaît pas à l'avance la quantité de mémoire nécessaire, par exemple pour des tableaux dont la taille est définie par l'utilisateur.