std:: free
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<cstdlib>
|
||
|
void
free
(
void
*
ptr
)
;
|
||
Libère l'espace précédemment alloué par std::malloc , std::calloc , std::aligned_alloc (depuis C++17) , ou std::realloc .
Si ptr est un pointeur nul, la fonction ne fait rien.
Le comportement n'est pas défini si la valeur de ptr n'est pas égale à une valeur retournée précédemment par std::malloc , std::calloc , std::aligned_alloc (depuis C++17) , ou std::realloc .
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
std::free
ou
std::realloc
a déjà été appelé avec
ptr
comme argument et qu'aucun appel à
std::malloc
,
std::calloc
,
std::aligned_alloc
(depuis C++17)
, ou
std::realloc
n'a abouti à un pointeur égal à
ptr
par la suite.
Le comportement est indéfini si, après que
std::free
a retourné, un accès est effectué via le pointeur
ptr
(à moins qu'une autre fonction d'allocation n'ait produit une valeur de pointeur égale à
ptr
).
|
Les fonctions suivantes doivent être thread-safe :
Les appels à ces fonctions qui allouent ou désallouent une unité particulière de stockage se produisent dans un ordre total unique, et chaque appel de désallocation se produit-avant la prochaine allocation (le cas échéant) dans cet ordre. |
(depuis C++11) |
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é à
std::free
.
Exemple
#include <cstdlib> int main() { int* p1 = (int*)std::malloc(10 * sizeof *p1); std::free(p1); // tout pointeur alloué doit être libéré int* p2 = (int*)std::calloc(10, sizeof *p2); int* p3 = (int*)std::realloc(p2, 1000 * sizeof *p3); if (!p3) // p3 null signifie que realloc a échoué et p2 doit être libéré. std::free(p2); std::free(p3); // p3 peut être libéré qu'il soit null ou non. }
Voir aussi
|
Documentation C
pour
free
|