In a 64-bit OS & hardware (HP-UX 11, v2250 model, 8 Gb of physical RAM present), I want to alloc many Gbs of RAM in a pro*c program. The test program is :

#include
#include
#include
#include
#define FOURMEG 4 * 1000 * 1024

int main()
{
int i,c=0;
void *p;

printf("Let's eat some memory.\n");
for (i=0; i<2048; i++) {
p=malloc(FOURMEG);
if (p != NULL) {
c += 4;
printf("Allocated %3d megabytes successfully\n",c);
}
else {
printf("malloc() failed\n");
break;
}
} exit(0);
}

I tried to make this program both in default and in 64-bit memory, using :

make -f demo_proc.mk build EXE=eat_mem OBJS=eat_mem.o

only changing build by build64 to make the 64-bit version. Both tries are sucessfull, no errors showed, BUT both versions alloc only up to :

itxf:/u1/app/oracle/product/8.1.7/precomp/demo/proc>eat_mem
Let's eat some memory.
Allocated 4 megabytes successfully
Allocated 8 megabytes successfully
Allocated 12 megabytes successfully
Allocated 16 megabytes successfully
Allocated 20 megabytes successfully
Allocated 24 megabytes successfully
....
Allocated 1668 megabytes successfully
Allocated 1672 megabytes successfully
Allocated 1676 megabytes successfully
malloc() failed


this same prog runs sucessfuly on another 64-bit (aix) machine. Any ideas about what to do next , what to check ?

Regards,

Chiappa