使用unsigned long long int进行动态分配

时间:2017-07-22 22:41:52

标签: c

如果我有以下变量unsigned long long int *size,最好离开size = calloc(2, sizeof(int))或它应该是size = calloc(2, sizeof(unsigned long long int))吗?

谢谢

3 个答案:

答案 0 :(得分:2)

第二种选择。您不希望在c中做出有关数据类型大小的假设 它非常依赖于平台/编译器。

答案 1 :(得分:2)

没有理由认为intunsigned long long int的大小相同(可能是)。如果size被声明为unsigned long long int,那么在提供的两个选项中,正确的选择是:

size = calloc(2, sizeof(unsigned long long int));

更好的做法是避免使用sizeof的显式类型:

size = calloc(2, sizeof *size);

这在初始编码中不易出错,并且更易于维护。如果类型在代码的生命周期内发生更改,则只需要在此处更改声明。

答案 2 :(得分:0)

int的大小可以是2或4个字节,具体取决于您运行的计算机 但是,无符号长long的大小至少为8个字节。

所以不,是一个使用worng大小的好习惯。