malloc_get_state, malloc_set_state - Sauvegarder et restaurer l'état de
l'implémentation de malloc
Bibliothèque C standard (
libc,
-lc)
#include <malloc.h>
void *malloc_get_state(void);
int malloc_set_state(void *state);
Note : ces fonctions sont supprimées dans la
glibc 2.25.
La fonction
malloc_get_state() sauvegarde l'état actuel de toutes
les variables servant à la gestion interne de
malloc(3) (mais
pas le contenu du tas ou l'état des pointeurs de fonctions
malloc_hook(3)). L'état est enregistré dans une structure
de données opaque dépendante du système, allouée
dynamiquement par
malloc(3), et un pointeur vers cette structure de
données est renvoyé comme valeur de résultat de la
fonction (il est de la responsabilité de celui qui appelle cette
fonction de libérer cette zone mémoire avec
free(3)).
La fonction
malloc_set_state() restaure l'état de toutes les
variables servant à la gestion interne de
malloc(3) en recopiant
celles se trouvant dans la structure de données opaque pointée
par
state.
En cas de succès,
malloc_get_state() renvoie un pointeur vers une
structure de données opaque nouvellement créée. En cas
d'erreur (par exemple quand la zone mémoire pour la structure de
données n'a pu être allouée), il renvoie NULL.
En cas de succès,
malloc_set_state() renvoie
0. Si
l'implémentation détecte que
state ne pointe pas vers une
structure de données ayant une forme valable,
malloc_set_state()
renvoie
-1. Si l'implémentation détecte que la version de
la structure de données référencée par
state est une plus récente que celle connue par
l'implémentation,
malloc_set_state() renvoie
-2.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
malloc_get_state(), malloc_set_state() |
Sécurité des threads |
MT-Safe |
Ces fonctions sont des extensions GNU.
Ces fonctions sont utiles lorsque cette implémentation de
malloc(3) fait partie d'une bibliothèque partagée et
quand le contenu du tas est sauvegardé et restauré par un autre
mécanisme. Cette technique est utilisée par GNU Emacs pour
implémenter sa fonction « dumping ».
Les pointeurs de fonction crochet ne sont jamais sauvegardés ou
restaurés par ces fonctions, avec deux exceptions : si la
vérification de
malloc() (voir
mallopt(3)) était
active lorsque
malloc_get_state() a été appelée,
alors
malloc_set_state() réinitialise si possible les fonctions
crochets de
malloc() ; si cette vérification
n'était pas utilisée dans l'état sauvegardé, mais
que l'appelant l’a demandée, alors les fonctions crochets sont
mises à zéro.
malloc(3),
mallopt(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Grégoire Scano <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]