This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Is there heap size limitaion?



----- Original Message -----
From: Andrew Haley <aph@redhat.com>
Date: Friday, January 2, 2009 11:50 am
Subject: Re: Is there heap size limitaion?

> Anna Sidera wrote:
> > 
> 
> > From: Andrew Haley <aph@redhat.com>
> 
> > 
> >> Anna Sidera wrote:
> >>> -----  -----
> >>> From: Andrew Haley <aph@redhat.com>
> 
> >>>> Anna Sidera wrote:
> >>>>> Can you tell me if there is heap size limitation in gcc? I 
> use 
> >> a 
> >>>> server with 4 CPU and 16 BG ram. I create tables using malloc 
> >> and 
> >>>> the total memory I can use is a little less than 4 GB.
> >>>>
> >>>> Seems odd.  What OS / architecture are you using?
> >>> I am using unix. SunOS 5.10
> >> OK, but what architecture?  32-bit or 64-bit mode?
> >>
> >> Type
> >>
> >> isainfo -v
> >>
> >> If it's 32-bit then you will be limited, obviously.
> >> If gcc is generating 32-bit executables then you will also be
> >> limited.  The -m64/-m32 options control this.
> 
> > isainfo -v gives the following output:
> > 
> > 64-bit sparcv9 applications
> >         vis2 vis
> > 32-bit sparc applications
> >         vis2 vis v8plus div32 mul32
> 
> So, did compiling with -m64 fix it?
> 
> Andrew.
> 
> 
-m64 did not work. For the following program if I use -m32 the fist printf statement works but before the second one I get core dump. If I use -m64 I get core dump before the first printf.

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
int main()
{

int i, j;

int **table1=malloc(10000000*sizeof(int));
int *table1_aux=(int *)malloc(10000000*100*sizeof(int));
for (i=0; i<10000000; i++) table1[i]=table1_aux+i*100;
for (i=0; i<10000000; i++) {
	for (j=0; j<100; j++) {
		table1[i][j]=0;
	}
}
printf("table1 ok\n");

int **table2=malloc(10000000*sizeof(int));
int *table2_aux=(int *)malloc(10000000*100*sizeof(int));
for (i=0; i<10000000; i++) table2[i]=table2_aux+i*100;
for (i=0; i<10000000; i++) {
	for (j=0; j<100; j++) {
		table2[i][j]=0;
	}
}
printf("table2 ok\n");

return 0;
}

Anna


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]