该程序包含如下代码:
int size;
...
int *pi = (int*)calloc(size, sizeof(int));
...
下面是用gcc7.2编译时的错误信息:</p>
错误:参数 1 范围 [18446744071562067968、18446744073709551615] 超过最大对象大小 9223372036854775807 [-Werror=alloc-size-larger-than=]
当我更改
int *pi = (int*)calloc(size, sizeof(int));
为
int *pi = (int*)calloc((unsigned int)size, sizeof(int));
错误消失了。
但是,在程序中,有很多malloc
和calloc
我原来的版本一样使用。
为什么 gcc 只检测到一个错误?