[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Xavier Leroy <Xavier.Leroy@i...> |
| Subject: | Re: garbage collector / lien avec le C et librairie strlib |
[ English summary: finalized blocks allow the Caml garbage collector to free data allocated with malloc in C libraries.] > J'ai l'impression que le programme regex.c (qui crée des automates > de reconnaissance d'expressions régulières) fait des "malloc". > Je ne sais pas si (ni comment comprendre) caml "récupère" la mémoire > lors d'un "garbage collector" lorsque, après avoir créé une expression > réguliere (avec str__regexp) le programme ne l'utilise plus et elle > n'est plus accessible. Il s'agit d'un trait malheureusement non documenté du GC de Caml Light et Objective Caml: certains blocs du tas Caml peuvent porter une fonction de "finalisation" qui est appelée lorsque le GC libère le bloc Caml en question. Typiquement, str__regexp alloue un tel bloc et stocke dedans le pointeur vers la structure allouée par malloc() renvoyée par la bibliothèque regex.c. La fonction de finalisation fait alors l'équivalent de free() sur le pointeur C contenu dans le bloc finalisé. On peut ainsi coupler le GC automatique de Caml avec une discipline de déallocation explicite telle que suivie par la plupart des bibliothèques C. Pour plus d'infos: http://caml.inria.fr/caml-list-ar/0345.html Cordialement, - Xavier Leroy