newCString -- to 'free' or not?

Glynn Clements glynn.clements at virgin.net
Sat Sep 25 17:48:21 EDT 2004


Peter Simons wrote:

> When I create a CString with Foreign.C.String.newCString, do
> I have to 'free' it after I don't need it anymore? Or is
> there some RTS magic taking place?
> 
> How about Foreign.Marshal.Utils.new and all those other
> newXYZ functions? 

Yes. The new* functions allocate the memory with malloc, and you have
to free it yourself. OTOH, the with* functions allocate the memory
with alloca, and it is freed automatically.

Also, a ForeignPtr includes a finaliser which will free the data
automatically when it is no longer referenced.

-- 
Glynn Clements <glynn.clements at virgin.net>


More information about the Glasgow-haskell-users mailing list