Comment la mémoire dans la programmation C Gratuit

Il est pas autant d'un problème car il était de retour à l'ère de la micro-ordinateur, mais la mémoire de gaspiller devrait encore être une préoccupation pour tout programmeur C. Bien que vous pouvez vous préparer à 1024 caractères en entrée, les chances sont bonnes que les utilisateurs de votre programme peuvent pas tous être Stephen King.

Dans ce cas, vous pouvez rogner vos demandes de mémoire après que vous les faites. La mémoire supplémentaire peut alors être retourné au système d'exploitation dans ce qui est considéré courtoisie.

REDONNER A QUELQUES BYTES

#include #include #include int main () {char * entrée-int len-entrée = (char *) malloc (sizeof (char) * 1024) -Si (entrée == null) {puts ("Impossible d'allouer un tampon! Oh non! ") - sortie (1) -} puts (" Type quelque chose de long et ennuyeux: ") - fgets (entrée, 1023, stdin) -NBCAR = strlen (entrée) -Si (realloc (entrée, sizeof (char) * (len + 1)) == null) {puts ("Impossible de réaffecter tampon!") - sortie (1) -} puts ("Mémoire réaffecté.") - puts ("Vous avez écrit:") - printf (" "% s " n ", entrée) -retour (0) -}

Le code source de redonner quelques octets accueille la fonction realloc () à la ligne 19. Voici le format:

p = Realloc (tampon,taille) -



tampon est une zone de stockage existante, créé par le malloc () (ou similaire) fonction. taille est la nouvelle taille de la mémoire tampon basée sur le nombre d'unités mais vous avez besoin d'un type de variable spécifique. En cas de succès, realloc () renvoie un pointeur sur tampon- autrement, NULL est retourné. Comme avec malloc (), la fonction realloc () nécessite l'en-tête stdlib.h.

L'en-tête de string.h est appelé dans à la ligne 3. Ce est de satisfaire l'utilisation de la fonction strlen () à la ligne 18. La longueur de la chaîne d'entrée est recueillie et enregistré dans le len variable.

À la ligne 19, la fonction realloc () est appelée. Il redimensionne un tampon déjà créé une nouvelle valeur. Dans la ligne 19, ce tampon est le tampon d'entrée, et la taille est la longueur de la chaîne, plus 1 pour tenir compte du caractère 0. Après tout, il est tout le texte qui était entrée et tout le stockage qui est nécessaire.

Si la fonction realloc () est réussie, il redimensionne le tampon. Si non, une valeur NULL est renvoyée, qui est testé pour à la ligne 19, et si vrais messages d'erreur, appropriées sont affichées.

Exercice 1: Tapez le code source à partir Redonner quelques octets dans votre éditeur. Construire et exécuter.

Bien que vous ne disposez pas de confirmation secondaire, on peut supposer que l'appel réussi à la fonction realloc () n'a, en fait, réduire la taille de la mémoire tampon d'entrée exactement ce qui était nécessaire. Tous les restes de stockage est de nouveau disponible pour le programme.

Une dernière fonction est nécessaire afin de rendre malloc () et realloc () dans un trio. Voilà la fonction free (), ont manifesté Si vous aimez votre mémoire, le remettre en liberté.

Si vous aimez votre MEMORY, le remettre en liberté

#include #include int main () {int * âge-age = (int *) malloc (sizeof (int) * 1) -Si (âge == null) {puts ("Out of memory ou quelque chose!") - sortie (1) -} printf ("Quel âge avez-vous au cours des années?") -scanf ("% d", l'âge) - * âge * = 365 printf ("Vous êtes plus de% d jours ancienne n", * âge) exempt (âge) -retour (0) -}

La fonction free () libère la mémoire allouée, le rendant disponible pour malloc () ou quelque chose d'autre à utiliser.

Exercice 2: Tapez le code source à partir si vous aimez votre mémoire, le libérer dans un nouveau projet. Construire et exécuter.

Il est pas nécessaire d'utiliser gratuitement () dans votre code sauf si elle est nécessaire ou recommandé. La plupart des programmeurs ne pas utiliser free (), grâce à des tas de mémoire emballés dans la plupart des appareils électroniques d'aujourd'hui. La mémoire utilisée par votre programme est libéré automatiquement par le système d'exploitation lorsque le programme quitte. Lorsque la mémoire est serré, cependant, utiliser généreusement fois realloc () et free () pour éviter les erreurs out-of-mémoire.


» » » » Comment la mémoire dans la programmation C Gratuit