Tag: 大小 t

是什么决定了可以分配多少内存?

这是我之前关于为什么size_t是必要的问题的后续跟进。 鉴于size_t保证足够大以表示你可以分配的内存块的最大大小(意味着仍然可能有一些大于size_t的整数),我的问题是…… 是什么决定了你可以一次分配多少钱?

为什么fgets接受int而不是size_t?

strcpy() , malloc() , strlen()和其他各种函数接受它们的参数或返回值作为size_t而不是int或unsigned int ,原因很明显。 某些文件函数(如fread()和fwrite()使用size_t 。 通过扩展,可以预期char* fgets (char *str, int num, FILE *stream)应该使用size_t而不是int作为其缓冲区大小的参数。 但是, fgets()使用int 。 有客观解释为什么?

为什么size_t当int足以满足数组的大小?

C标准保证int能够存储每个可能的数组大小。 至少,这是我从阅读§6.5.2.1,第1小节(数组下标约束)中理解的内容: 其中一个表达式应具有类型”指向对象类型的指针”,另一个表达式应具有整数类型,结果具有类型”type”。 既然我们将int s用作数组下标,为什么我们应该使用size_t来确定数组的大小? 为什么strlen()在int足够时返回size_t ?