Hi All,
See below for executable program.
Shouldn't gcc use swap space as temp storage? Either my machine is set up improperly, or gcc does not (cannot?) access this capability.
It seems to me that programs should be able to access swap memory in these cases, but the behaviour has not been confirmed.
Can someone please confirm or correct me?
Can someone please confirm or correct me?
Apologies if this is not the correct listserv for the present discussion.
Thanks for any/all help.
Cheers,
Max
/*
* This program segfaults with the *bar array declaration.
*
* I wonder why it does not write the *foo array to swap space
* then use the freed ram to allocate *bar.
*
* I have explored the shell ulimit parameters to no avail.
*
* I have run this as root and in userland with the same outcome.
*
* It seems to be a problem internal to gcc, but may also be a kernel issue.
*
*/
#include <stdio.h>
#include <stdlib.h>
#define NMAX 628757505
int main(int argc,char **argv) {
float *foo,*bar;
foo=calloc(NMAX,sizeof(float));
fprintf(stderr,"%9.3f %9.3f\n",foo[0],foo[1]);
#if 1
bar=calloc(NMAX,sizeof(float));
fprintf(stderr,"%9.3f %9.3f\n",bar[0],bar[1]);
#endif
return 0;
}
* This program segfaults with the *bar array declaration.
*
* I wonder why it does not write the *foo array to swap space
* then use the freed ram to allocate *bar.
*
* I have explored the shell ulimit parameters to no avail.
*
* I have run this as root and in userland with the same outcome.
*
* It seems to be a problem internal to gcc, but may also be a kernel issue.
*
*/
#include <stdio.h>
#include <stdlib.h>
#define NMAX 628757505
int main(int argc,char **argv) {
float *foo,*bar;
foo=calloc(NMAX,sizeof(float));
fprintf(stderr,"%9.3f %9.3f\n",foo[0],foo[1]);
#if 1
bar=calloc(NMAX,sizeof(float));
fprintf(stderr,"%9.3f %9.3f\n",bar[0],bar[1]);
#endif
return 0;
}