Fonction malloc en c

Fonction malloc en c

«Dans le langage C, l'allocation de la mémoire est un concept très connu, et nous avons de nombreuses fonctions pour allouer des souvenirs à différents mutables, je.e., mémoire dynamique, mémoire statique, etc. La fonction malloc () de C est l'une de ces fonctions qui non seulement alloue la mémoire à un mutable spécifique mais renvoie également un pointeur d'adresse où cette mémoire a été stockée. Cet article vous aidera à utiliser Malloc en C tout en utilisant Ubuntu 20.04 Système. Rendez votre système à jour avant de sauter sur l'implémentation du code C car il vous aidera à exécuter vos codes en douceur sur le shell. Ainsi, nous l'avons mis à jour jusqu'à présent, et il nous a demandé d'ajouter le mot de passe pour l'utilisateur qui fonctionne actuellement. Nous l'avons fourni un mot de passe et le processus a été terminé en quelques secondes."

Nous allons mettre en œuvre cet article dans C Langue; Ainsi, nous exigeons que son compilateur soit installé à notre fin. Linux possède l'utilité «GCC» C en tant que compilateur qui peut être installé avec «APT», comme nous l'avons fait dans l'image montrée. Maintenant, vous pouvez faire gratuitement votre erreur de code en quelques secondes.

Avant de commencer notre exemple C, il doit y avoir un fichier dans lequel nous ajoutons les codes C pour la compilation et l'exécution. Par conséquent, nous créons un fichier «fichier.C ". Le fichier doit avoir un «.C ”Extension à ses extrémités pour l'identifier comme un fichier C.

Exemple 01

Dans cette illustration de code, nous utiliserons la fonction malloc () pour allouer de la mémoire à une variable en utilisant une valeur constante et afficher si la mémoire a été attribuée avec succès ou non. Nous devons démarrer ce code C avec les en-têtes principaux de la bibliothèque C qui doivent avoir dans un code, et sans ceux-ci, notre code serait inutile pour exécuter. Le code contient une fonction Main () qui va effectuer tout ce dont nous avons besoin pour l'allocation de mémoire et l'affichage d'erreur si la mémoire ne s'alloque pas avec succès. La fonction commence à partir de l'initialisation d'une variable entière constante «A» comme vide.

Nous avons spécifié une variable à double pointeur de type long «V» pour allouer la mémoire à l'aide de la fonction malloc (). Cette fonction malloc () utilise la variable entière constante «A» pour l'allocation de mémoire au pointeur «m.«Il y a une instruction« if-else »utilisée pour vérifier si la mémoire a été allouée à la variable du pointeur« M »ou n'a pas alloué la mémoire. Donc, c'est la partie «si» qui vérifierait si la valeur de «M» est nul ou non. S'il s'agit de «null», la fonction printf () utilisée à l'intérieur montrera un message d'erreur, je.e., «Pas de mémoire» avec une rupture de ligne à sa fin en utilisant le «\ n."

De plus, l'instruction de fonction «Exit (-1)» se terminera. Alors que la partie else utiliserait 2 instructions de fonction printf (), i.e., la première instruction pour afficher la valeur d'une variable entière constante «A» et la deuxième instruction pour afficher le message de réussite avec la mémoire spécifiée. Enregistrons notre code avant de le faire du code source compilé pour l'exécution.

#inclure
#inclure
int main()
const int a = "";
Long Double * M = (Long Double *) Malloc (Sizeof (Long Double) * A);
if (m == null)
printf ("Erreur: pas de mémoire \ r \ n");
sortie (-1);
autre
printf ("value =% d \ n", a);
printf ("super, mémoire:% lf \ n", * m;

En compilation, il a affiché certains avertissements, mais nous pouvons les ignorer un instant. Lors de l'exécution du code compilé, nous avons reçu un message d'erreur «pas de mémoire» car nous n'avions initialisé aucune valeur entière à la variable «A» pour l'allocation de mémoire.

Nous mettons à jour le même code source en ajoutant une valeur entière «500» pour une variable «A» afin que nous puissions attribuer une mémoire exacte à une variable de pointeur «M."Enregistrez ce code mis à jour pour l'instant.

#inclure
#inclure
int main()
const int a = 500;
Long Double * M = (Long Double *) Malloc (Sizeof (Long Double) * A);
if (m == null)
printf ("Erreur: pas de mémoire \ r \ n");
sortie (-1);
autre
printf ("value =% d \ n", a);
printf ("super, mémoire:% lf \ n", * m;

En compilant ce code mis à jour, nous n'avons pas eu d'erreurs, pas même un avertissement qui a été montré avant. Après exécution de ce code compilé et mis à jour, nous avons obtenu la valeur de la variable «A» affichée avec la mémoire allouée en point de décimal, je.e., il n'affiche pas une valeur de mémoire exacte.

Exemple 02

Voyons bien un autre exemple pour allouer de la mémoire à une variable spécifique. Ainsi, commencez cet exemple avec l'utilisation de «STdio.h ”et« stdlib.H ”En-têtes avant quoi que ce soit d'autre. La méthode main () a obtenu son exécution à partir de la déclaration d'une variable de pointeur de type de caractère «A». La ligne suivante utilise la fonction malloc () pour créer une mémoire pour un pointeur de caractère de taille 10. Il s'agit d'une allocation de mémoire initiale pour le pointeur «A."

Après cela, la fonction Strcpy () est là pour copier une chaîne de mots sur un pointeur variable «A."L'utilisation de printf () est un must pour afficher notre valeur de chaîne juste enregistrée sur le pointeur de variable« A »ainsi que son adresse de mémoire sur le shell. Le caractère spécial «% s» indique la valeur de la chaîne, tandis que le «% u» désigne l'adresse à afficher. Après cela, nous réaffirmons une nouvelle mémoire à la même variable de pointeur de type de caractère «A» de taille 20 en utilisant la fonction realloc () de la langue C. Il y a une utilisation de la fonction strcat () pour concaténer un pointeur variable «A» avec une nouvelle valeur de chaîne «Langue."

Après cela, nous avons à nouveau utilisé l'instruction printf () pour afficher la valeur de chaîne nouvellement concaténée avec l'adresse d'un pointeur variable «A."Après cela, nous avons essayé la fonction« libre »sur le pointeur variable« A »pour libérer la mémoire allouée. Enregistrons d'abord ce code, puis essayons le compilateur GCC sur le shell pour le compiler rapidement.

#inclure
#inclure
int main()
char * a;
A = (char *) malloc (10);
Strcpy (A, "Bienvenue à C");
printf ("value =% s, adresse:% u \ n", a, a);
strcat (a, "langue");
printf ("value =% s, adresse:% u \ n", a, a);
gratuit (a)

Maintenant, nous allons compiler notre code avec «GCC» comme présenté en dessous. Bien que l'utilisation de la fonction «strcpy» montre un avertissement, cela ne nous empêche pas d'exécuter le code.

Après avoir compilé le fichier.Fichier C C, nous l'avons exécuté sur la demande de console avec le «./un.requête de Linux pour exécuter les fichiers de code. Vous verrez une sortie de deux lignes montrant deux valeurs différentes pour un pointeur variable «A» mais la même adresse, je.e., Valeurs anciennes et mises à jour. Cela signifie que la mémoire allouée a été mise à jour, mais l'adresse reste la même pour une variable «un."

Conclusion

C'est ça! Maintenant, vous pourrez créer vos codes pour attribuer de la mémoire à une variable spécifique dans votre système en utilisant la fonction malloc () de C.