malloc() over 4Gb

ml at fruitbat.demon.co.uk ml at fruitbat.demon.co.uk
Mon Feb 16 06:00:41 PST 2004


brooks at one-eyed-alien.net wrote:
> On Sun, Jan 25, 2004 at 01:37:47PM +0000, ml at fruitbat.demon.co.uk wrote:
> > Hi. Could someone clarify whether or not it's possible to malloc()
> > and mmap() chunks of memory > 4Gb in size using FreeBSD/AMD64 and
> > that FreeBSD/AMD64 isn't susceptible to the 4Gb process boundary that
> > 32-bit OSs are restricted by?
>
> It works fine (just remember to set your malloc options to aj before
> mallocing that much memory, it takes a loooong time if you done :-):
> [9:52am] brooks at brimstone (~): uname -a
> FreeBSD brimstone 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Tue Jan  6 13:18:20 P=
> ST 2004     brooks at brimstone:/usr/obj/usr/p4/xname/sys/GENERIC  amd64
> [9:52am] brooks at brimstone (~): ./a
> a.out*    aeroauth*=20
> [9:52am] brooks at brimstone (~): cat foo.c
> #include <stdio.h>
> #include <stdlib.h>
> #include <stdint.h>
> #define GB      (1024*1024*1024)
> int
> main (int argc, char **argv)
> {
>         void *foo;
>         printf("Trying to malloc %zd bytesn", (size_t)7*GB);        foo =3D malloc((size_t)7*GB);
>         foo =3D malloc((size_t)7*GB);        if (foo !=3D NULL)
>         if (foo !=3D NULL)
>                 printf("Successn");        else
>         else
>                 printf("failuren");}
> }
> [9:52am] brooks at brimstone (~): gcc -o foo foo.c
> [9:52am] brooks at brimstone (~): ./foo=20
> Trying to malloc 7516192768 bytes
> Success
> [9:52am] brooks at brimstone (~):=20

Hi. Thanks for that information!

I went out and bought the box and it does indeed seem to malloc() over
4Gb. However, if you change the allocation from 7*GB to 8*GB in your
sample program, it still keels over inside malloc()!

Do you know if there's any sort of 8Gb clamp in this OS?! Cheers!

> -- Brooks

A.




More information about the freebsd-amd64 mailing list