The program contains code like follows:
int size;
...
int *pi = (int*)calloc(size, sizeof(int));
...
Here is the error message when compiled with gcc7.2:
error: argument 1 range [18446744071562067968, 18446744073709551615] exceeds maximum object size 9223372036854775807 [-Werror=alloc-size-larger-than=]
When I change
int *pi = (int*)calloc(size, sizeof(int));
to
int *pi = (int*)calloc((unsigned int)size, sizeof(int));
The error disappeared.
However, in the program, there are many malloc
and calloc
used like my original version.
Why there is only one error detected by gcc?