Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Allocation Dynamique de Structures | Travail avec les Pointeurs et les Structures
Maîtriser les Structs en C

bookAllocation Dynamique de Structures

Examinons comment allouer dynamiquement de la mémoire en langage C.

Pour allouer de la mémoire sur le tas, utiliser la fonction malloc() de la bibliothèque stdlib.h :

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Remarque

Lorsque vous allouez dynamiquement de la mémoire pour l'utiliser dans votre programme, cette mémoire reste réservée jusqu'à ce que vous la libériez explicitement à l'aide de free().

main.c

main.c

copy
12345678910111213141516171819
#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }

Si une structure contient plusieurs champs de types de données différents, le compilateur va uniformiser la taille des champs afin que la structure soit stockée de manière « pratique » en mémoire.

Après avoir terminé l'exercice, prêter attention au nombre d'octets alloués pour la structure comportant les champs int et char. Ce phénomène sera abordé plus en détail ultérieurement dans ce cours.

Tâche

Swipe to start coding

Vous devez créer une structure Student et allouer dynamiquement de la mémoire pour celle-ci en utilisant la fonction malloc().
Votre tâche consiste à initialiser la structure avec des valeurs d'exemple et à retourner un pointeur vers celle-ci.

Dans la fonction createStudent :

  1. Utilisez malloc() pour allouer de la mémoire pour une structure Student.
  2. Vérifiez si l'allocation a été réussie (sinon, retournez NULL).
  3. Attribuez un nom par défaut à l'aide de sprintf() — par exemple, "Alice Johnson".
  4. Attribuez une valeur à age, telle que 21.
  5. Attribuez une valeur à gpa, telle que 3.85.
  6. Retournez le pointeur vers la structure allouée.

Dans la fonction main :

  1. Utilisez la fonction free() pour libérer la mémoire allouée après utilisation.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 4
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

bookAllocation Dynamique de Structures

Glissez pour afficher le menu

Examinons comment allouer dynamiquement de la mémoire en langage C.

Pour allouer de la mémoire sur le tas, utiliser la fonction malloc() de la bibliothèque stdlib.h :

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Remarque

Lorsque vous allouez dynamiquement de la mémoire pour l'utiliser dans votre programme, cette mémoire reste réservée jusqu'à ce que vous la libériez explicitement à l'aide de free().

main.c

main.c

copy
12345678910111213141516171819
#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }

Si une structure contient plusieurs champs de types de données différents, le compilateur va uniformiser la taille des champs afin que la structure soit stockée de manière « pratique » en mémoire.

Après avoir terminé l'exercice, prêter attention au nombre d'octets alloués pour la structure comportant les champs int et char. Ce phénomène sera abordé plus en détail ultérieurement dans ce cours.

Tâche

Swipe to start coding

Vous devez créer une structure Student et allouer dynamiquement de la mémoire pour celle-ci en utilisant la fonction malloc().
Votre tâche consiste à initialiser la structure avec des valeurs d'exemple et à retourner un pointeur vers celle-ci.

Dans la fonction createStudent :

  1. Utilisez malloc() pour allouer de la mémoire pour une structure Student.
  2. Vérifiez si l'allocation a été réussie (sinon, retournez NULL).
  3. Attribuez un nom par défaut à l'aide de sprintf() — par exemple, "Alice Johnson".
  4. Attribuez une valeur à age, telle que 21.
  5. Attribuez une valeur à gpa, telle que 3.85.
  6. Retournez le pointeur vers la structure allouée.

Dans la fonction main :

  1. Utilisez la fonction free() pour libérer la mémoire allouée après utilisation.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 4
single

single

some-alt