这是读取行的函数的简短片段。这怎么可能与它bufsize
相比((size_t)-1)/2
?
我想象将变量与例如进行比较。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 */
}