CALLOC |
Allocation Combiné |
---|---|
Langage C | stdlib.h |
Syntaxe
void *calloc(size_t n,size_t taille); |
Paramètres
Nom | Description |
---|---|
n | Ce paramètre permet d'indiquer le nombre de bloc de mémoire à allouer |
taille | Ce paramètre permet d'indiquer la taille du bloc de mémoire à allouer |
Description
Cette fonction permet d'effectuer une réservation de n*taille d'octets de mémoire dynamique.
Algorithme
MODULE CALLOC(n, size) * Calculer la taille totale de la mémoire nécessaire totalSize ← n x size * Allouer de la mémoire pointer ← allocateMemory(totalSize) * Vérifier si l'allocation a échoué SI pointer est NULL ALORS * L'allocation a échoué RETOURNE NULL FIN SI * Initialiser la mémoire à zéro BOUCLE POUR i ← 0 JUSQU'A totalSize - 1 FAIRE pointer[i] ← 0 FIN BOUCLE POUR RETOURNE pointer |
Remarques
- calloc vs malloc : La fonction calloc() et la fonction malloc() sont similaires. Mais calloc() alloue de la mémoire pour les initialisations à zéro. Cependant, malloc() ne le fait pas.
- Fonctionnalité principale : La fonction calloc alloue de la mémoire contiguë pour un certain nombre d'éléments d'une taille donnée et initialise chaque octet de la mémoire allouée à zéro. Cela garantit que toute la mémoire est propre et sans valeurs aléatoires, contrairement à malloc, ne faisant pas cette initialisation.
- Utilisation courante : calloc est particulièrement utile pour allouer de la mémoire pour des tableaux ou des structures où toutes les valeurs doivent être initialisées à zéro dès le départ. Cela évite d'avoir à utiliser manuellement memset après l'allocation.
- Gestion de l'échec : Si calloc ne peut pas allouer la mémoire requise, elle retourne un pointeur NULL. Les développeurs doivent toujours vérifier si le pointeur retourné est NULL pour éviter des comportements indéfinis ou des plantages du programme lors de l'accès à la mémoire.
- Calcul de la taille totale : calloc calcule automatiquement la taille totale de la mémoire en multipliant le nombre d'éléments par la taille d'un élément. Cela réduit le risque d'erreurs de calcul par rapport à l'utilisation de malloc, où l'utilisateur doit effectuer cette multiplication manuellement.
- Portabilité et performance : L'initialisation à zéro effectuée par calloc peut être plus lente que l'allocation brute de malloc. Cependant, cette différence est souvent négligeable sur les systèmes modernes. L'avantage de l'initialisation en fait un choix fréquent pour des applications nécessitant de la mémoire propre.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
on obtiendra le résultat suivant :
Valeur p[15] = 850Voir également
Langage de programmation - C - Référence de procédures et fonctions - realloc
Langage de programmation - C - Référence de procédures et fonctions - malloc
Langage de programmation - C - Référence de procédures et fonctions - free
Langage de programmation - C++ - Référence de procédures et fonctions - calloc
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 730.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 46.
Dernière mise à jour : Mardi, le 28 juillet 2015