Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
* garbage collector / lien avec le C et librairie strlib
@ 1998-11-13  5:34 Maltey UPS
  1998-11-13  9:48 ` Xavier Leroy
  0 siblings, 1 reply; 2+ messages in thread
From: Maltey UPS @ 1998-11-13  5:34 UTC (permalink / raw)
  To: caml-list; +Cc: Francois.Maltey

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1110 bytes --]


(Re)Bonjour

Je me mets à caml car je fais cette année des TP d'info en caml.
Je découvre le langage... et sa pratique, je m'aperçois que la
librairie contrib/libstr permet de traiter les expressions régulières
comme grep (ou un autre programme utilisant GNU-regexp)
[après une petite modification qui ne choisit pas obligatoirement 
 les expressions régulières à la emacs, que je toruve un peu pauvre]
Ceci me permet de faire en caml les mêmes petits programmes que ceux
que je faisais en perl.

// MA QUESTION //

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.

Si quelqu'un peut m'éclairer...
Le petit livre "manuel de référence" est très bien (sans aucune ironie)
mais ne sachant pas comment prendre ses indications, je suis perdu ! 

Bien cordialement

francois.maltey@enst-bretagne.fr




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: garbage collector / lien avec le C et librairie strlib
  1998-11-13  5:34 garbage collector / lien avec le C et librairie strlib Maltey UPS
@ 1998-11-13  9:48 ` Xavier Leroy
  0 siblings, 0 replies; 2+ messages in thread
From: Xavier Leroy @ 1998-11-13  9:48 UTC (permalink / raw)
  To: Maltey UPS, caml-list

[ 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




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~1998-11-13 11:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-11-13  5:34 garbage collector / lien avec le C et librairie strlib Maltey UPS
1998-11-13  9:48 ` Xavier Leroy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox