Well. It seems my former message was unclear? Here is a more precise question: should/could C allocated bigarrays be freed? Context: OCaml calls one C function M, at about 50 Hz. In M, a C function (let's call it A) is locally defined. One pointer to A is given to another function, that calls A more than once. Function A wraps a C array it receives as a parameter into a bigarray, and give it to OCaml through one callback. The whole process is repeated, at about 50 Hz. I do not know if the bigarrays allocated by M are garbage collected in any way, and if they are not, how I could free them in order to avoid any memory leak? Thanks in advance Salutations Matthieu