例如,
int len1 = strlen(string);
size_t len1 = strlen(string1)
使用size_t是否会对编译器行为或代码运行时间或内存差异产生任何影响? 我完全知道差异,这在之前的另一个帖子中得到了回答,但我担心RAM的行为。
答案 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。