See if it helps
char **a;
int i;
a = malloc(700000 * sizeof(char*));
for (i = 0; i < 700000; i++) {
a[i] = malloc(120*sizeof(char));
}
strcpy(a[0],"hello");
strcpy(a[1],"goodbye");
strcpy(a[2],"yes");
for (i=0;i<=3;i++) {
printf("%s\n",a[i]);
}
Per Michi, don't forget to free your memory afterwards.
for (i = 0; i < 700000; i++) {
free(a[i]);
}
free(a);
Application . You can check the stack size and change it. Consider this
struct rlimit rl;
int result;
result = getrlimit(RLIMIT_STACK, &rl);
printf("stack limit %d\n", rl.rlim_cur);
printf("stack limit %d\n", rl.rlim_max);
return 0;
It gives me
stack limit 8388608
stack limit -1
(there is 8 MB).
source
share