Deux fonctions permettent de réserver et de libérer dynamiquement une zone de la mémoire : malloc pour la réservation, dont la déclaration est la suivante :
void *malloc(size_t size);
Le seul paramètre à passer à malloc est le nombre d'octets à allouer. La valeur retournée est l'adresse du premier octet de la zone mémoire alloué. Si l'allocation n'a pu se réaliser (par manque de mémoire libre), la valeur de retour est la constante NULL.
La libération de la mémoire précédemment allouée via malloc est assurée par la fonction free dont la déclaration est la suivante :
void free(void *ptr);
Le seul paramètre à passer est l'adresse du premier octet de la zone alloué et aucune valeur n'est retournée une fois cette opération réalisée.
Voici du code réservant 20 octets et le libérant immédiatement après si l'allocation a été effectuée.
#include <stdlib.h> char * pointeur = malloc(20 * sizeof(char)); //Allocation de 20 octets if(pointeur == NULL) { printf("L'allocation n'a pu être réalisée\n"); } else { printf("L'allocation a été un succès\n"); free(pointeur); //Libération des 20 octets précédemment alloués }