使用size_t而不是unsigned int有什么好处吗?

时间:2016-05-23 09:41:41

标签: c string size-t

例如,

  

int len1 = strlen(string);

     

size_t len1 = strlen(string1)

使用size_t是否会对编译器行为或代码运行时间或内存差异产生任何影响? 我完全知道差异,这在之前的另一个帖子中得到了回答,但我担心RAM的行为。

2 个答案:

答案 0 :(得分:3)

size_t可以存储数组可以获得的最大大小,因为它基本上可以达到可寻址内存空间的大小。

unsigned int仅由其最小范围(0到65535)定义,但可能更大。例如,您希望它在32位计算机上为32位。

答案 1 :(得分:1)

size_t未签名,而int已签名。此外,在某些平台上,SIZE_MAX可能大于sizeof(int)。因此,要生成可移植代码,您应该使用size_t(参见§7.18.3)。

  

数据类型:size_t

     

这是一个无符号整数类型,用于表示对象的大小。 sizeof运算符的结果属于这种类型,并且   诸如malloc(参见Unconstrained Allocation)和memcpy之类的函数   (请参阅复制字符串和数组)接受此类型的参数   指定对象大小。在使用GNU C库的系统上,这将是   unsigned int或unsigned long int。

source