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