Allocation 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));
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
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.
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 :
- Utilisez
malloc()pour allouer de la mémoire pour une structure Student. - Vérifiez si l'allocation a été réussie (sinon, retournez
NULL). - Attribuez un nom par défaut à l'aide de
sprintf()— par exemple,"Alice Johnson". - Attribuez une valeur à
age, telle que21. - Attribuez une valeur à
gpa, telle que3.85. - Retournez le pointeur vers la structure allouée.
Dans la fonction main :
- Utilisez 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
Génial!
Completion taux amélioré à 4.35
Allocation 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));
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
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.
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 :
- Utilisez
malloc()pour allouer de la mémoire pour une structure Student. - Vérifiez si l'allocation a été réussie (sinon, retournez
NULL). - Attribuez un nom par défaut à l'aide de
sprintf()— par exemple,"Alice Johnson". - Attribuez une valeur à
age, telle que21. - Attribuez une valeur à
gpa, telle que3.85. - Retournez le pointeur vers la structure allouée.
Dans la fonction main :
- Utilisez la fonction
free()pour libérer la mémoire allouée après utilisation.
Solution
Merci pour vos commentaires !
single