When I input "1073741824", it returns "Segmentation fault".
"1073741824" is 4294967296÷4, which is (INT_MAX+1)÷(sizeof(char *)).
and also, this is the malloc()'s parameter in this code.
But I don't know how to mitigate this problem.
Help me please.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int main(int argc, char **argv)
{
int val, i;
char *mem;
if (argc < 2)
exit(1);
val = atoi(argv[1]);
if (val > 0) {
mem = malloc(val * sizeof(char *));
if (mem == NULL) {
printf("Failure\n");
exit(2);
}
}
for (i = 0; i < val; i++) {
mem[i] = 'A';
printf("%c", mem[i]);
}
printf("\n");
return 0;
}
mmap()might fix this.