English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
Re: Ocaml C interface - Usage of custom blocks
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2005-09-22 (10:35)
From: Dominik Brugger <dominikbrugger@g...>
Subject: Re: Ocaml C interface - Usage of custom blocks
Is there a "best practice" for returning C data to OCaml 
which was allocated by malloc?

One way to do this is given by the curses library example
in the OCaml reference manual in section 18.6:

value curses_initscr(value unit)
  CAMLparam1 (unit);
  CAMLreturn ((value) initscr());  /* OK to coerce directly from WINDOW * to
                              value since that's a block created by malloc() */

But section 18.2.3 of the manual points out, that it is potentially
dangerous to free C data, as it might be reclaimed by the OCaml GC.
So what happens if the data is never explicitly freed? Does the OCaml heap
space grow until there is no more memory available to the C part of the
OCaml program?

In my opinion the only way to avoid these problems is the usage of
OCaml custom blocks.