Allocation dynamique de mémoire en programmation C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En programmation C, nous ne connaissons pas toujours à l'avance la taille initiale d'un tableau. Dans de tels cas, nous utilisons l'allocation dynamique de mémoire, une méthode d'allocation de mémoire uniquement lorsqu'elle est nécessaire. malloc() est une fonction utilisée en programmation C pour allouer une quantité spécifique de mémoire nécessaire pour un tableau ou une variable qui sera utilisée pendant l'exécution. Dans ce laboratoire, nous allons apprendre à allouer dynamiquement de la mémoire en utilisant malloc() puis à libérer l'espace mémoire en utilisant free().

Note: Vous devez créer le fichier ~/project/main.c vous-même pour pratiquer la programmation et apprendre à le compiler et à l'exécuter en utilisant gcc.

cd ~/project
## créer main.c
touch main.c
## compiler main.c
gcc main.c -o main
## exécuter main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123283{{"Allocation dynamique de mémoire en programmation C"}} c/for_loop -.-> lab-123283{{"Allocation dynamique de mémoire en programmation C"}} c/pointers -.-> lab-123283{{"Allocation dynamique de mémoire en programmation C"}} c/memory_address -.-> lab-123283{{"Allocation dynamique de mémoire en programmation C"}} c/function_declaration -.-> lab-123283{{"Allocation dynamique de mémoire en programmation C"}} c/user_input -.-> lab-123283{{"Allocation dynamique de mémoire en programmation C"}} c/output -.-> lab-123283{{"Allocation dynamique de mémoire en programmation C"}} end

Inclure les fichiers d'en-tête nécessaires

Dans cette étape, nous allons inclure les fichiers d'en-tête nécessaires dans notre programme.

#include <stdio.h>
#include <stdlib.h>

Définir la fonction main()

Dans cette étape, nous allons définir la fonction main(). Dans cette fonction, nous allons déclarer les variables nécessaires au programme.

int main()
{
    int n, i, *ptr, sum = 0;

    printf("\nEntrez le nombre d'éléments : ");
    scanf("%d", &n);

Allouer dynamiquement de la mémoire en utilisant malloc()

Dans cette étape, nous allons allouer dynamiquement de la mémoire en utilisant malloc(). La taille de la mémoire à allouer est déterminée par le produit du nombre d'éléments et de la taille de chaque élément en utilisant l'opérateur sizeof().

ptr = (int *) malloc(n * sizeof(int));

if(ptr == NULL)
{
    printf("\nErreur! La mémoire n'a pas été allouée.");
    exit(0);
}

Stockez des valeurs dans la mémoire allouée

Dans cette étape, nous allons stocker des valeurs dans la mémoire allouée en utilisant une boucle.

for(i = 0; i < n; i++)
{
    printf("\nEntrez l'élément %d : ", i + 1);
    scanf("%d", ptr + i);
    sum += *(ptr + i);
}

Affichez les valeurs

Dans cette étape, nous allons afficher les valeurs qui ont été stockées.

printf("\nLes éléments entrés sont : ");
for(i = 0; i < n; i++)
{
    printf("%d ", *(ptr + i));
}

Libérez la mémoire

Dans cette étape, nous allons libérer la mémoire allouée en utilisant free().

free(ptr);

Récapitulatif

Dans ce laboratoire, nous avons appris à allouer dynamiquement de la mémoire en utilisant malloc() et à libérer l'espace mémoire en utilisant free(). Nous avons appris à déclarer des variables dans la fonction main() et à allouer de la mémoire en utilisant malloc(). Nous avons également appris à stocker des données dans l'espace mémoire alloué, à afficher les valeurs stockées et puis à libérer la mémoire allouée en utilisant free().