Menu
Coddy logo textTech

Mémoire dynamique avec 'new'

Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 6 sur 56.

Jusqu'à présent, vous avez travaillé avec des pointeurs qui pointent vers des variables déjà créées dans votre programme. Mais que se passe-t-il si vous avez besoin de créer des variables pendant que votre programme est en cours d'exécution ? C'est là que l'allocation dynamique de mémoire avec le mot-clé new devient essentielle.

Le mot-clé new vous permet d'allouer de la mémoire pour une variable sur le tas (heap) pendant l'exécution du programme. Contrairement aux variables classiques qui sont créées sur la pile (stack), la mémoire allouée dynamiquement persiste jusqu'à ce que vous la libériez explicitement.

int* ptr = new int;  // Alloue de la mémoire pour un entier
*ptr = 42;           // Assigne une valeur à la mémoire allouée

Dans cet exemple, new int alloue suffisamment de mémoire pour stocker un entier et retourne un pointeur vers cet emplacement mémoire. Vous pouvez ensuite utiliser l'opérateur de déréférencement pour assigner des valeurs et accéder à la variable allouée dynamiquement tout comme n'importe quel autre pointeur.

L'allocation dynamique de mémoire est particulièrement utile lorsque vous ne savez pas de quelle quantité de mémoire vous aurez besoin avant l'exécution, ou lorsque vous avez besoin que des variables existent au-delà de la portée dans laquelle elles ont été créées. Cette flexibilité fait de new un outil puissant pour construire des programmes plus complexes.

challenge icon

Défi

Facile

Créez un programme qui démontre l'allocation dynamique de mémoire en utilisant le mot-clé new pour allouer de la mémoire pour une variable pendant l'exécution du programme.

L'entrée suivante sera fournie :

  • Une valeur entière à stocker dans la mémoire allouée dynamiquement

Votre programme doit :

  1. Utiliser le mot-clé new pour allouer dynamiquement de la mémoire pour un entier
  2. Stocker le pointeur retourné par new dans une variable pointeur nommée numPtr
  3. Utiliser l'opérateur de déréférencement pour assigner la valeur d'entrée à la mémoire allouée dynamiquement
  4. Afficher la valeur stockée dans la mémoire allouée dynamiquement en déréférençant le pointeur
  5. Afficher l'adresse mémoire stockée dans le pointeur

Utilisez le format de sortie exact suivant :

Value: [value]
Address: [memory address]

L'adresse mémoire sera affichée au format hexadécimal, ce qui correspond à la manière dont le C++ affiche les adresses mémoire pour la mémoire allouée dynamiquement.

Aide-mémoire

Le mot-clé new alloue de la mémoire pour une variable sur le tas (heap) pendant l'exécution du programme :

int* ptr = new int;  // Alloue de la mémoire pour un entier
*ptr = 42;           // Assigne une valeur à la mémoire allouée

Contrairement aux variables régulières créées sur la pile (stack), la mémoire allouée dynamiquement persiste jusqu'à ce qu'elle soit explicitement libérée et peut exister au-delà de la portée où elle a été créée.

Essayez vous-même

#include <iostream>
using namespace std;

int main() {
    // Lire l'entrée
    int value;
    cin >> value;
    
    // À FAIRE : Écrivez votre code ci-dessous
    // Utilisez 'new' pour allouer dynamiquement de la mémoire pour un entier
    // Stockez le pointeur dans une variable nommée 'numPtr'
    // Affectez la valeur d'entrée à la mémoire allouée dynamiquement
    
    // Afficher le résultat
    cout << "Value: " << /* déréférencez numPtr ici */ << endl;
    cout << "Address: " << /* affichez l'adresse stockée dans numPtr */ << endl;
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux