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));
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
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.
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 :
- Utiliser
malloc()pour allouer de la mémoire pour une structure Student. - Vérifier si l'allocation a été réussie (sinon, retourner
NULL). - Attribuer un nom par défaut à l'aide de
sprintf()— par exemple,"Alice Johnson". - Attribuer une valeur à
age, telle que21. - Attribuer une valeur à
gpa, telle que3.85. - Retourner le pointeur vers la structure allouée.
Dans la fonction main :
- Utiliser la fonction
free()pour libérer la mémoire allouée après utilisation.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion