[Haskell-cafe] heap lifetime question

Bulat Ziganshin bulat.ziganshin at gmail.com
Thu Aug 7 01:58:34 EDT 2008


Hello Vasili,

Thursday, August 7, 2008, 9:33:32 AM, you wrote:

oh, it was my mistake. alloca behavior is completely defined by it's
generic implementation:

allocaBytes      :: Int -> (Ptr a -> IO b) -> IO b
allocaBytes size  = bracket (mallocBytes size) free

although GHC implementation is much more efficient

btw, why you can't download ghc library sources and read them yourself??



> If I am correct, I cannot associate a ForeignPtr with alloca or
> allocaBytes object via "newForeignPtr" because the
> alloca/allocaBytes heap object will be GC'd when I leave the
> function that allocated this object/. I.e. if I have a heap object
> that I want to live beyond a function invocation, I must be very careful in coding....
>  
> Vasili

> On Thu, Aug 7, 2008 at 12:30 AM, Galchin, Vasili <vigalchin at gmail.com> wrote:
>  
> so Bulat .. 

>      You seem to be saying what I suspect ... i.e. if an
> allocaBytes call is inside a function, when the function is exited
> then the said heap object is GC'd??

> Regards, Vasili
>  

>  

> On Thu, Aug 7, 2008 at 12:25 AM, Bulat Ziganshin
> <bulat.ziganshin at gmail.com> wrote:
>  Hello Vasili,
>  

>  Thursday, August 7, 2008, 9:13:43 AM, you wrote:
>  
 >>     What is the lifetime of various heap objects ... e.g. created by allocaBytes, alloca, etc?
>  
>  
> alloca/allocaBytes just mimicks stack allocation but actually allocates
>  buffer in usual heap. this buffer lives while references to it exists
>  
>  on practice, it's usually gc'ed by next minor GC
>  
>  --
>  Best regards,
>   Bulat                            mailto:Bulat.Ziganshin at gmail.com
>  
>  

>  

>   


-- 
Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com



More information about the Haskell-Cafe mailing list