QCM : Gestion de la mémoire en C++ — 9 questions

Questions et réponses du QCM

1. Que fait l'opérateur & lorsqu'il est utilisé devant une variable ?

Il crée une copie de la variable.
Il déréférence un pointeur pour accéder à la valeur.
Il renvoie l'adresse mémoire de cette variable.
Il initialise un pointeur à nullptr.

Il renvoie l'adresse mémoire de cette variable.

Explication

L'opérateur & en C++ renvoie l'adresse mémoire de la variable qui lui est associée. Par exemple, &v donne l'adresse mémoire où est stockée la variable v.

2. Quelle est la principale différence entre une variable, un pointeur et une référence en C++ ?

Une variable stocke une valeur, un pointeur une adresse mémoire, une référence un alias d’une variable existante.
Une variable est un alias, un pointeur stocke une valeur, une référence une adresse mémoire.
Une variable et un pointeur sont identiques, seule la référence est différente.
Une variable peut être null, un pointeur peut seulement pointer vers une variable existante, une référence ne peut jamais être modifiée.

Une variable stocke une valeur, un pointeur une adresse mémoire, une référence un alias d’une variable existante.

Explication

Les variables stockent directement des valeurs, les pointeurs contiennent des adresses mémoire, et les références agissent comme des alias directes d'une variable existante, simplifiant leur utilisation.

3. Quelle est la différence essentielle entre une référence et un pointeur en C++ ?

Une référence doit toujours être initialisée, alors qu'un pointeur peut ne pas l'être.
Une référence ne peut pas être null, alors qu'un pointeur peut l'être.
Une référence peut changer d'objet après initialisation, alors qu'un pointeur ne peut pas.
Une référence stocke une adresse, alors qu'un pointeur stocke une valeur.

Une référence ne peut pas être null, alors qu'un pointeur peut l'être.

Explication

Une référence en C++ est un alias permanent d'une variable, elle ne peut pas être null et doit être initialisée lors de sa déclaration. Un pointeur, en revanche, est une variable qui contient une adresse mémoire et peut être null ou modifié pour pointer vers d'autres adresses.

4. Quel opérateur en C++ permet d’obtenir l’adresse mémoire d’une variable ?

L’opérateur `&`.
L’opérateur `*`.
L’opérateur `->`.
L’opérateur `#`.

L’opérateur `&`.

Explication

L’opérateur `&` est utilisé pour obtenir l’adresse mémoire d’une variable en C++, facilitant la manipulation de pointeurs.

5. Quelle est la principale différence entre une variable et un pointeur en C++ ?

Une variable ne peut pas être modifiée, alors qu'un pointeur peut l'être.
Une variable est une référence, alors qu'un pointeur est une copie de cette référence.
Une variable est toujours de type int, alors qu'un pointeur peut être de n'importe quel type.
Une variable stocke une valeur, tandis qu'un pointeur stocke une adresse mémoire.

Une variable stocke une valeur, tandis qu'un pointeur stocke une adresse mémoire.

Explication

Une variable contient directement une valeur (par exemple, un entier 42), tandis qu'un pointeur contient une adresse mémoire pointant vers une autre variable ou donnée. C'est cette distinction qui est fondamentale en gestion mémoire en C++.

6. Quel est le risque principal associé à l’utilisation d’un pointeur null (`nullptr`) si on ne le vérifie pas avant de le déréférencer ?

Le programme peut accéder à une zone mémoire non autorisée, provoquant une erreur de segmentation.
Le programme ignorera la variable, ce qui peut causer une erreur de logique.
Il y a un risque de corruption de la mémoire globale.
Le compilateur générera une erreur lors de la compilation.

Le programme peut accéder à une zone mémoire non autorisée, provoquant une erreur de segmentation.

Explication

Déréférencer un pointeur null mène à une violation d’accès mémoire, souvent à une erreur de segmentation, ce qui peut faire planter le programme.

7. En 2007, quelle a été une avancée importante dans la gestion de mémoire en C++ selon le contenu ?

La normalisation de l’utilisation des pointeurs intelligents.
Le standard C++11 qui a introduit des pointeurs intelligents et des références rvalue.
L’introduction du mot-clé `nullptr` dans la norme C++.
L’abandon total des pointeurs au profit uniquement des références.

L’introduction du mot-clé `nullptr` dans la norme C++.

Explication

En 2007, avec la norme C++2007, l’usage de `nullptr` a été standardisé, améliorant la sécurité de la gestion de mémoire en différenciant les pointeurs null.

8. Comment accéder aux membres d’une structure ou classe via un pointeur en C++ ?

En utilisant l’opérateur `->`.
En déréférençant le pointeur avec `*` puis en utilisant le point `.`.
En utilisant simplement le nom du pointeur.
En utilisant l’opérateur `&`.

En utilisant l’opérateur `->`.

Explication

L’opérateur `->` permet d’accéder directement aux membres d’un objet via un pointeur, c’est une syntaxe plus concise que de déférencer puis d’utiliser le point.

9. Quelle pratique est préférée pour éviter la gestion explicite de la mémoire et renforcer la sécurité en C++, ?

Utiliser des références plutôt que des pointeurs.
Utiliser uniquement des variables locales.
Utiliser des pointeurs bruts et ne jamais les libérer.
Éviter totalement la manipulation de mémoire.

Utiliser des références plutôt que des pointeurs.

Explication

Les références en C++ sont plus sûres que les pointeurs car elles ne peuvent pas être nulles et ne nécessitent pas de gestion explicite de la mémoire, réduisant ainsi les risques d’erreurs.

Révisez avec les flashcards

Mémorisez les réponses avec 10 flashcards sur Gestion de la mémoire en C++.

Variables — stockage ?

Contiennent une valeur

Variables — stockage action?

Stockent des valeurs dans la mémoire.

* — fonction ?

Déréférencer un pointeur, accéder à la valeur

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Gestion de la mémoire en C++.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM