Realloc c

Realloc c
Le concept de la fonction realloc () dans le langage de programmation C sera discuté dans cet article. Pour commencer par ce concept, nous devons connaître le concept d'allocation de mémoire et les différentes fonctions de l'allocation de la mémoire en C. Il existe deux types d'allocation de mémoire dans le langage de programmation C: allocation de mémoire statique et allocation de mémoire dynamique.

Attribution de la mémoire en C:

Les ressources sont constamment en panne. En tout temps, nous avons travaillé pour améliorer l'utilisation des ressources. Cela a été le fondement de notre développement. L'allocation de la mémoire est une notion liée à cet objectif. Afin que des variables réelles puissent être créées, la mémoire doit être attribuée aux variables que nous construisons. Il y a maintenant une distinction entre la façon dont nous pensons que les choses se produisent et comment elles se produisent. Quand nous pensons à tout faire, nous pensons à commencer depuis le début; Pourtant, lorsqu'un ordinateur fait une variable «x», c'est plus comme la distribution; Le système choisit simplement une cellule de mémoire pour X dans un large pool de cellules de mémoire disponibles. C'est comme une chambre d'hôtel attribuée au nom de quelqu'un dans de nombreuses chambres préexistantes gratuites ou vacantes. Cet exemple a probablement précisé comment l'ordinateur gère l'allocation de la mémoire.

Maintenant, les types d'allocation de mémoire qui sont autorisés dans le langage de programmation C sont l'allocation de mémoire statique et l'allocation de mémoire dynamique. Lorsque nous définissons les variables, nous définissons toutes les variables qui seront utilisées afin que le compilateur comprenne ce que nous faisons parce que la variable est utilisée est une partie essentielle du programme que l'utilisateur veut, et non un symbole rouge flottant à travers.

Exemple réel

Lorsque nous déclarons les variables, le compilateur les attribue à des espaces de mémoire vacants comme s'ils se trouvaient dans un hôtel avec des chambres vides préexistantes qui seront affectées à différents noms de l'invité. Comme vous pouvez le voir, cela se fait avant l'exécution du programme; Vous ne pouvez pas utiliser cette approche pour allouer des variables pendant que le programme est en cours d'exécution. C'est là que l'allocation de mémoire dynamique entre en jeu.

Exemple de programmation

Prenez un tableau comme exemple à mesure que la taille est déclarée auparavant, et vous ne pouvez pas ajuster la taille d'un tableau une fois qu'il a été déclaré. Il est possible que le tableau que vous avez spécifié ne soit pas assez grand. Vous pouvez allouer manuellement la mémoire pendant l'exécution pour remédier à ce problème. C'est ce qu'on appelle l'allocation de mémoire dynamique. Il existe plusieurs fonctions de bibliothèque sur le langage de programmation C qui nous aide à allouer la mémoire dynamiquement, qui sont définies dans le fichier d'en-tête «»; Les fonctions sont les suivantes:

  1. Fonction malloc (),
  2. Fonction calloc (),
  3. fonction realloc (),
  4. Fonction libre ().

La syntaxe de la fonction malloc

Malloc est l'abréviation de l'allocation de la mémoire. Un bloc de mémoire avec le nombre d'octets spécifié est réservé dans la fonction malloc (). Il renvoie également un pointeur vide qui peut être transformé en n'importe quel type de pointeur. La syntaxe de la fonction malloc en programmation C est écrite ci-dessous:

#p = (CastType *) Malloc (taille);

Si nous devions écrire une expression pour allouer de la mémoire à une variable entière, cela ressemblerait à ceci,

p = (int *) malloc (100 * sizeof (int));

Le morceau de code écrit ci-dessus met de côté 400 octets d'espace mémoire. La raison en est que le type de données entier a une taille de 4 octets. Le pointeur «P» garde une trace de l'octet de départ de la mémoire allouée.

Syntaxe pour la fonction calloc ()

L'allocation contiguë est l'abréviation du terme «calloc.«Dans la programmation C, la fonction calloc () est utilisée pour allouer une certaine quantité de mémoire et la réinitialiser par la suite à zéro. Cette adresse mémoire est renvoyée sous forme de pointeur vide, qui peut par la suite être converti en type nécessaire. La fonction accepte deux arguments qui déterminent la quantité de mémoire à allouer dans son ensemble. La fonction Syntaxe pour calloc () dans la programmation C est écrite ci-dessous:

P = (CastType *) calloc (n, taille);

Maintenant, nous allons examiner la fonction Realloc dans la programmation C.

La fonction realloc () en c:

Realloc signifie Reallocation. La méthode realloc () peut être utilisée pour modifier la taille de la mémoire autrefois allouée si la mémoire allouée dynamiquement est inadéquate ou plus que nécessaire. La fonction realloc () renvoie un pointeur vers un nouvel objet avec la taille fournie par la taille et les transactions de l'ancien objet référencé par PTR. Jusqu'à la plus petite des deux tailles, les éléments du nouvel objet sont similaires à ceux de l'objet précédent avant de traiter. Tous les octets du nouvel objet qui sont plus grands que la taille de l'ancien objet ont des valeurs non définies. Realloc () ne doit être utilisé que pour la mémoire allouée dynamiquement; ça vaut la peine de noter. Le comportement est inconnu si l'espace mémoire n'est pas alloué dynamiquement.

Syntaxe pour la fonction realloc ()

La syntaxe de la fonction realloc () dans la programmation C est écrite ci-dessous:

# realloc (ptr, nouvelle taille);

Dans l'expression ci-dessus, Realloc est une fonction qui redimensionne l'emplacement de la mémoire pointé par PTR. Le titre de la variable du pointeur qui doit être redimensionné est «PTR». La «nouvelle taille» fait référence à la nouvelle taille de la zone de mémoire. Il a le potentiel d'être plus petit ou supérieur à la taille actuelle.

Bien que toutes ces fonctions aient réussi à attribuer l'espace mémoire, ils ne sont pas encore libres, et nous devons les libérer explicitement. C'est là que la fonction libre () est nécessaire pour libérer l'espace alloué dans la mémoire. La syntaxe de la fonction libre () est écrite ci-dessous:

#Free (PTR);

«PTR» est le nom du pointeur dont l'espace mémoire sera libéré.

Maintenant, nous allons examiner l'exécution de la fonction realloc () dans l'ubuntu 20.04 Environnement.

Implémentation de la fonction realloc () dans Ubuntu 20.04:

Comme nous le savons sur la base de la fonction realloc (), nous pouvons maintenant implémenter cette fonction dans l'Ubuntu 20.04 Environnement. Pour faire notre code, lancez le terminal depuis votre bureau Ubuntu et tapez «CD Desktop» pour accéder au répertoire de bureau puis, avec cette commande «Touch», vous pouvez faire un .C fichier C avec le nom et l'extension de .c. Ensuite, allez à votre bureau et trouvez et ouvrez votre .c fichier. Nous allons maintenant créer un code dans ce fichier pour utiliser la méthode realloc () pour réallocation de la mémoire.

Initialement, nous avons ajouté les deux bibliothèques les plus importantes de la langue C. Après cela, nous avons commencé notre programme principal. Nous avons déclaré une variable de pointeur et avons rendu sa valeur égale à «null». Que nous avons utilisé la méthode realloc () et ajouté deux paramètres. Une instruction «si» est ajoutée pour vérifier la condition. Si la condition indiquée est bien, le compilateur exécutera l'instruction printf.

Après avoir appuyé sur le bouton Enregistrer, fermez le fichier. Retour au terminal et tapez "G ++" suivi du nom de votre fichier et du ".C ”Extension pour produire le fichier de sortie. Vous pouvez maintenant exécuter ce fichier en tapant "./ »Suivi de votre«.Extension out ”pour recevoir la sortie souhaitée.

Comme vous pouvez le voir, nous avons effectivement réaffecté l'espace mémoire du pointeur à l'aide de la méthode realloc (), et nous avons maintenant une meilleure compréhension de la façon dont cette fonction fonctionne dans une application C en raison de cet exemple.

Conclusion:

Dans ce tutoriel, nous avons étudié le concept d'allocation de mémoire et ses différents types. Le but de cet article était de se renseigner sur les avantages et les inconvénients de la méthode d'allocation de mémoire et où les utiliser. Les différentes fonctions de la méthode d'allocation de mémoire dynamique ont également été discutées en détail dans cet article. En fin de compte, nous avons également implémenté la fonction realloc () dans le langage de programmation C dans l'Ubuntu 20.04 Environnement pour mieux comprendre ce concept.