lazy memory allocation
Steve Kargl
sgk at troutmask.apl.washington.edu
Fri Aug 23 17:10:47 UTC 2013
On Fri, Aug 23, 2013 at 11:25:58AM +0100, Anton Shterenlikht wrote:
> I've been burned by what's apparently called
> "lazy memory allocation" on linux.
>
> My code calls a subroutine that allocates
> a coarray. This routine exits fine, with
> no error. However, when I tried to initialise
> the coarray, I got segfault. On investigation
> I discovered that the coarray was not in fact
> allocated. In my particular case this was
> because there was not enough memory.
>
> Anyway, I was later told that this is an
> expected behaviour on linux, with its
> "lazy memory allocation".
>
> I'm wondering if FreeBSD also uses
> a lazy memory allocation, or we do it differently?
man malloc.
FreeBSD uses jemalloc, which allows one to tune the
allocators behavior. I suspect, but have not tried
to verify, that by default it uses lazy memory
allocation.
To avoid possible issues with lazy memory allocation,
initialize the memory.
real, allocatable :: a(:)
allocate(a(10) :: source=0.)
You can also add in STAT and ERRMSG after SOURCE to
inspect whether allocation was successful.
--
Steve
More information about the freebsd-fortran
mailing list