lkml.org 
[lkml]   [2004]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: 2.6.9, 64bit, 4GB memory => panics ...
From
Date
On Sun, 2004-12-05 at 14:20, Adam Heath wrote:
> On Sun, 5 Dec 2004, Rudolf Usselmann wrote:
>
> > int mem[10000];
> > int i, n;
> >
> > for(i=0;i<2000;i++) {
> > printf("Doing alloc %0d ...\n",i);
> > mem[i] = (int)malloc(1024*1024*1024);
>
> allocate a 1 gig block, but store it in an int array? That's wrong.
>
> > if(mem[i] == NULL)
> > printf("Malloc failed ...\n");
> > else
> > for(n=0;n<(1024*1024*1024);n=n+640) mem[i] = n;
>
> You alter n, but then always only set mem[i], without varying i.
>
> Your program is buggy, and memleaks.
>
> Plus, the kernel uses overcommit by default, and since you aren't actually
> touching the memory you are allocating, you are only limited by the address
> space size allowed per process(depends on how you configured the kernel).



Thanks for pointing that out Adam ! Will this work better:



#include "stdio.h"
#include "stdlib.h"

int main() {
char *mem[10000];
int i, n;
for(i=0;i<2000;i++) {
printf("Doing alloc %0d ...\n",i);
mem[i] = (char *)malloc(1024*1024*1024);
if(mem[i] == NULL)
printf("Malloc failed ...\n");
else
for(n=0;n<(1024*1024*1024);n=n+640) mem[i][n] = n;
}
while(1);
return(0);
}

Thanks !
rudi

-
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/

\
 
 \ /
  Last update: 2005-03-22 14:08    [from the cache]
©2003-2011 Jasper Spaans