Dans le domaine de l’informatique, malloc est défini comme étant une des fonctions de la bibliothèque du langage C. Son rôle est de permettre aux développeurs d’allouer de manière dynamique une mémoire. La libération de la mémoire quant à elle est réservée à la fonction Free. En effet, une fois que la mémoire est allouée avec malloc, elle est également libérée par la fonction Free. Dans le cas contraire, une fuite de mémoire peut survenir. Apprenez-en plus sur malloc dans cet article.
Comment réserver de la mémoire avec malloc ?
Il existe deux méthodes différentes pour réserver de la mémoire. Ici, nous allons considérer la méthode malloc. Afin de pouvoir réserver de l’espace de stockage de quelque manière que ce soit, il faut d’abord penser à inclure la bibliothèque standard. Il contient également la fonction free que vous aurez à utiliser.
Avec malloc vous pouvez réserver une zone mémoire contiguë de taille octets. La réservation pour malloc se fait avec ce prototype : void *malloc(size_t size) ;. En cas de succès, la fonction renvoie l’adresse de la zone réservée. Si l’opération échoue, vous obtiendrez une valeur NULL à la place.
Il est important pour vous de toujours noter que malloc réserve l’espace mémoire sans initialisation. Cela signifie que tout ce qui se trouvait auparavant dans les cellules de mémoire pertinentes continuera d’y être tant que vous ne l’écraserez pas.
Comment s’y prendre pour réserver la mémoire allouée avec malloc ?
Il est important de faire la réservation juste après l’allocation avec malloc. Cependant, vous devez d’abord vous assurer que la taille doit être ventilée encore plus loin. En effet, différents types de données nécessitent différentes quantités de stockage. Ainsi, pour obtenir la taille, vous devez multiplier la taille du type de données souhaité, par la quantité souhaitée de valeurs stockables.
Si la réservation d’espace échoue, vous recevrez un message d’erreur et quitterez le programme. Cependant, si la réservation fonctionne, il vous sera communiqué et vous allez pouvoir continuer. Dans certains cas, l’erreur peut être la fin de la fonction, mais vous êtes libre d’effectuer ensuite toutes les fonctions et opérations normales dont vous avez besoin pour votre programme. Incidemment, c’est le cas jusqu’à ce que vous libériez à nouveau votre espace de stockage réservé à la fin.
Si vous ne le faites pas, cette mémoire sera réservée. Cependant, vous ne pourrez alors plus accéder au pointeur correspondant après la fin de sa portée. Un tel accident s’appelle une fuite de mémoire. Cependant, de tels trous peuvent être facilement évités. Pour cela, dès que vous n’avez plus besoin d’un pointeur, vous libérez sa zone mémoire avec la commande free. Pour ce dernier, vous aurez juste besoin de la déclaration : void free(void *ptr) ;.
Quelles sont les fonctions analogues à malloc ?
Une zone mémoire allouée avec malloc ne s’initialise pas automatiquement. Celui-ci peut se faire grâce à la fonction menset. Grâce à la fonction appelée Calloc, la phase d’initialisation n’est plus indispensable à cause des zones mémoire liées qui reviennent à 0.
Voici comment se présente la déclaration de Calloc : void *calloc(size_t nmemb, size_t size) ;.
Une autre fonction appelée realloc vous permet de procéder à la modification de la mémoire allouée avec malloc. Si la nécessité de faire bouger la zone mémoire se présente à cause du manque de mémoire contiguë, une libération de l’ancienne zone pourra être réalisée avec realloc par le biais de Free.
Quant à la déclaration de realloc, voici comment elle se présente : void *realloc (void *ptr, size_t size) ;.
À savoir, le paramètre ptr indique le commencement d’une zone mémoire dont la taille sera modifiée. Le deuxième paramètre size, représente la taille récente en octet d’une zone.