[Haskell-cafe] FFI nested structs - malloc - free

Proclivis mike at proclivis.com
Tue May 5 03:42:33 UTC 2015

FFI Gurus,

I created a c2hs FFI of a nested C structure, where struct A has a pointer to a struct B. To do so, I used a malloc, but I am unsure if the memory will be freed when the resulting Ptr is freed.

The example at this link uses the same technique, so it will serve as an example.


Line 48 and 51 do the malloc and assign the pointer in the struct, from inside a Storable poke implementation.

But, there is no explicit free, nor a finalizer.

Will the memory be freed when the Ptr of the Storable is freed?

If it is, it implies that some magic keeps track of mallocs inside a poke, and creates finalizers. Or, this example leaks. If it leaks, how do I create a finalizer from inside a poke implementation?


More information about the Haskell-Cafe mailing list