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
Structures en C
Section 2. Chapitre 4
single

single

Allocation Dynamique de Structures

Glissez pour afficher le menu

Examen de l'allocation dynamique de 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));
sizeof+struct
Note
Remarque

Lorsque de la mémoire est allouée dynamiquement pour une utilisation dans un programme, cette mémoire reste réservée jusqu'à ce qu'elle soit explicitement libérée à l'aide de free().

main.c

main.c

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, observez combien d'octets sont alloués pour la structure avec les champs int et char. Ce phénomène sera abordé plus en détail plus loin dans ce cours.

Tâche

Glissez pour commencer à coder

Vous devez créer une structure Student et allouer dynamiquement de la mémoire pour celle-ci à l'aide de 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. Utiliser malloc() pour allouer de la mémoire pour une structure Student.
  2. Vérifier si l'allocation a été réussie (sinon, retourner NULL).
  3. Attribuer un nom par défaut à l'aide de sprintf() — par exemple, "Alice Johnson".
  4. Attribuer une valeur à age, telle que 21.
  5. Attribuer une valeur à gpa, telle que 3.85.
  6. Retourner le pointeur vers la structure allouée.

Dans la fonction main :

  1. Utiliser 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

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

some-alt