Re: malloc problem to allocate very large blocks

From: Nagendra Singh Tomar (nagendra_tomar@adaptec.com)
Date: Mon Jul 28 2003 - 23:58:52 EST


AFAIK malloc will not return you memory more than the total virtual memory
(RAM+swap) in the system. So if you want more than 2GB allocations from
malloc, make sure you have at least 2GB virtual mem, keeping aside some
space for the kernel.

--tomar

On Mon, 28 Jul 2003, Tung-Han Hsieh wrote:

> Hello,
>
> I am developing applications which requires more than 2GB memory.
> But I found that in my Linux system the malloc() cannot allocate
> more than 2GB memory. Here is the details of my system:
>
> CPU: Pentium 4 2.53 GHz
> RAM: 2 GB
> Swap: 512 MB
> OS: Debian-3.0 stable
> Kernel: 2.4.20
> gcc: 2.95.4 20011002
> glibc: 2.2.5-6
>
> In theory, in a 32-bits machine the maximum allocatable memory
> is up to 4GB. But in the following very simple testing program:
>
> =====================================================================
> #include <stdio.h>
> #include <stdlib.h>
>
> main()
> {
> size_t l;
> char *s1=NULL, *s2=NULL;
>
> l = 1024*1024*1024;
>
> s1 = malloc(l);
> s2 = malloc(l);
> if (! s1) printf("s1 malloc failed\n");
> if (! s2) printf("s2 malloc failed\n");
> }
> =====================================================================
>
> only the block for s1 can be allocated. Further, if I change the
> program to
>
> =====================================================================
> #include <stdio.h>
> #include <stdlib.h>
>
> main()
> {
> size_t l;
> char *s1=NULL;
>
> l = 2*1024*1024*1024;
>
> s1 = malloc(l);
> if (! s1) printf("s1 malloc failed\n");
> }
> =====================================================================
>
> the gcc complier complain to me that "foo.c:9: warning: integer overflow
> in expression" during the compilation (I use: "gcc foo.c" to compile
> it),
> and the block for s1 cannot be allocated at all. I am wondering if there
> is any way to overcome the 2GB limit.
>
> Thank you very much for your reply in advance.
>
>
> Best Regards,
>
> T.H.Hsieh
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel"
> in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Jul 31 2003 - 22:00:38 EST