free
|
Défini dans l'en-tête
<stdlib.h>
|
||
|
void
free
(
void
*
ptr
)
;
|
||
Libère l'espace précédemment alloué par malloc() , calloc() , aligned_alloc() , (depuis C11) ou realloc() .
Si
ptr
est un pointeur nul, la fonction ne fait rien.
Le comportement est indéfini si la valeur de
ptr
n'est pas égale à une valeur retournée précédemment par
malloc()
,
calloc()
,
realloc()
, ou
aligned_alloc()
(depuis C11)
.
Le comportement est indéfini si la zone mémoire référencée par
ptr
a déjà été désallouée, c'est-à-dire si
free()
,
free_sized()
,
free_aligned_sized()
(depuis C23)
, ou
realloc()
a déjà été appelé avec
ptr
comme argument et qu'aucun appel à
malloc()
,
calloc()
,
realloc()
, ou
aligned_alloc()
(depuis C11)
n'a produit un pointeur égal à
ptr
par la suite.
Le comportement est indéfini si après que
free()
a retourné, un accès est effectué via le pointeur
ptr
(à moins qu'une autre fonction d'allocation n'ait produit par coïncidence une valeur de pointeur égale à
ptr
).
|
Un appel à
|
(depuis C11) |
Table des matières |
Paramètres
| ptr | - | pointeur vers la mémoire à désallouer |
Valeur de retour
(aucun)
Notes
La fonction accepte (et ne fait rien avec) le pointeur nul pour réduire le nombre de cas particuliers. Que l'allocation réussisse ou non, le pointeur retourné par une fonction d'allocation peut être passé à
free()
.
Exemple
#include <stdlib.h> int main(void) { int *p1 = malloc(10*sizeof *p1); free(p1); // tout pointeur alloué doit être libéré int *p2 = calloc(10, sizeof *p2); int *p3 = realloc(p2, 1000*sizeof *p3); if(p3) // p3 non nul signifie que p2 a été libéré par realloc free(p3); else // p3 nul signifie que p2 n'a pas été libéré free(p2); }
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 7.24.3.3 La fonction free (p: 365)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.22.3.3 La fonction free (p: 254)
- Norme C11 (ISO/IEC 9899:2011):
-
- 7.22.3.3 La fonction free (p: 348)
- Norme C99 (ISO/IEC 9899:1999) :
-
- 7.20.3.2 La fonction free (p: 313)
- Norme C89/C90 (ISO/CEI 9899:1990) :
-
- 4.10.3.2 La fonction free
Voir aussi
|
alloue de la mémoire
(fonction) |
|
|
(C23)
|
désalloue la mémoire dimensionnée précédemment allouée
(fonction) |
|
(C23)
|
désalloue la mémoire dimensionnée et alignée précédemment allouée
(fonction) |
|
Documentation C++
pour
free
|
|