Gestion de la mémoire en C++ : pointeurs, références et allocation dynamique
Fiche de révision · Numérique et sciences informatiques · 1ère
L'essentiel du cours
Chapitre 1 : La mémoire : une ville d'adresses
Une variable vit à une adresse mémoire unique, comme vous vivez à une adresse postale.
Chapitre 2 : Pointeurs : des variables qui stockent des adresses
Un pointeur est comme un papier sur lequel on écrit l'adresse d'une maison : il indique où trouver la variable.
Chapitre 3 : Références : des alias pratiques
Une référence est un surnom : si vous appelez quelqu'un par son surnom, vous parlez à la même personne.
Chapitre 4 : new et delete : gérer la mémoire soi-même
new réserve de la mémoire sur le tas, et delete la libère : c'est un contrat à respecter.
Teste-toi · 8 questions
1.Que contient un pointeur en C++ ?
Voir la réponseMasquer la réponse
Réponse : 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 la réponse
Réponse : &
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 la réponse
Réponse : 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 la réponse
Réponse : 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 la réponse
Réponse : 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 la réponse
Réponse : 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 la réponse
Réponse : 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 la réponse
Réponse : 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.