【发布时间】:2013-03-25 15:31:39
【问题描述】:
我已经问过一个类似的问题,但我认为现在问题不同了.. 我在eclipse,linux机器上用C写。
我需要读取测试文件,并且每次都尝试使用不同的缓冲区大小... 我知道如果缓冲区的大小太小,我需要在缓冲区上运行几次,但我不知道该怎么做......
这是我的代码(当我在大小为 67108864 的缓冲区上运行时,我遇到了分段错误。 * 我编辑了我的代码
int main(void)
{ int fd;
char* buff = malloc (67108864);
if (buff){
fd = open("testfile.txt", O_RDONLY);
if (fd >= 0) {
while (read(fd,buff,67108864)!=0){}
close(fd);
}
}
free(buff);
return 0;
}
【问题讨论】:
-
它在我的机器上工作正常,67108864 是 2**26,由于你的数据类型是 char(1 字节),它只有 64MB,应该可以正常工作。您可能需要检查“读取”函数的返回值,错误时为 -1。