[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