malloc
|
Défini dans l'en-tête
<stdlib.h>
|
||
|
void
*
malloc
(
size_t
size
)
;
|
||
Alloue
size
octets de stockage non initialisé.
Si l'allocation réussit, retourne un pointeur aligné de manière appropriée pour tout type d'objet ayant un alignement fondamental .
Si
size
est zéro, le comportement de
malloc
est défini par l'implémentation. Par exemple, un pointeur nul peut être retourné. Alternativement, un pointeur non nul peut être retourné ; mais un tel pointeur ne doit pas être
déréférencé
, et doit être passé à
free
pour éviter les fuites de mémoire.
|
Un appel précédent à
free
,
free_sized
, et
free_aligned_sized
(depuis C23)
ou
realloc
qui désalloue une région de mémoire
synchronise-avec
un appel à
|
(depuis C11) |
Table des matières |
Paramètres
| size | - | nombre d'octets à allouer |
Valeur de retour
En cas de succès, retourne le pointeur vers le début de la mémoire nouvellement allouée. Pour éviter une fuite de mémoire, le pointeur retourné doit être désalloué avec free() ou realloc() .
En cas d'échec, retourne un pointeur nul.
Exemple
#include <stdio.h> #include <stdlib.h> int main(void) { int *p1 = malloc(4*sizeof(int)); // alloue suffisamment pour un tableau de 4 int int *p2 = malloc(sizeof(int[4])); // idem, en nommant directement le type int *p3 = malloc(4*sizeof *p3); // idem, sans répéter le nom du type if(p1) { for(int n=0; n<4; ++n) // peuple le tableau p1[n] = n*n; for(int n=0; n<4; ++n) // l'affiche printf("p1[%d] == %d\n", n, p1[n]); } free(p1); free(p2); free(p3); }
Sortie :
p1[0] == 0 p1[1] == 1 p1[2] == 4 p1[3] == 9
Références
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.22.3.4 La fonction malloc (p. 254)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.22.3.4 La fonction malloc (p: 349)
- Norme C99 (ISO/IEC 9899:1999) :
-
- 7.20.3.3 La fonction malloc (p: 314)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 4.10.3.3 La fonction malloc
Voir aussi
|
désalloue la mémoire précédemment allouée
(fonction) |
|
|
Documentation C++
pour
malloc
|
|