gpt4 book ai didi

c - size_t 用作公式中的值

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:39 25 4
gpt4 key购买 nike

这是函数阅读行的一小段。它怎么可能将 bufsize((size_t)-1)/2 进行比较?

我想象将变量与 eg 进行比较。 int - 这是不可能的;相反,INT_MAX 是正确的,我认为。那么该代码如何才能实际工作并且不出错呢?

int c;
size_t bufsize = 0;
size_t size = 0;

while((c=fgetc(infile)) != EOF) {
if (size >= bufsize) {
if (bufsize == 0)
bufsize = 2;
else if (bufsize <= ((size_t)-1)/2)
bufsize = 2*size;
else {
free(line);
exit(3);
}
newbuf = realloc(line,bufsize);
if (!newbuf) {
free(line);
abort();
}
line = newbuf;
}
/* some other operations */
}

最佳答案

(size_t)-1

这是-1 转换为size_t(type)value 是 C 中的强制转换。

由于 size_t 是无符号类型,这实际上是 size_t 可以容纳的最大值,所以它用于确保缓冲区大小实际上可以安全地加倍(因此随后除以二)。

关于c - size_t 用作公式中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com