1

当我使用

  fstat(fileno(file), &st); //struct stat st

  buf = malloc(fsize);   //size_t fsize

  fread(buf, 1, fsize, file);

我真的很怀疑,因为malloc应该fsize * sizeof(size_t)为我分配大空间,但是当我尝试访问时buf + 8*fsize,我已经超出了界限。

但是,buf+fsize它在正确的位置,文件末尾,我刚刚计算了地址,它们都很多!像 malloc 只是fsize * sizeof(char)为我返回了很大的空间。

所以,我在哪里错了,任何帮助都是值得的。

4

1 回答 1

2

你的代码说malloc(fsize),但你想要的是malloc(fsize * sizeof(size_t)). 该malloc函数采用要分配的字节数。它无法知道您将使用内存来存储size_t's。

更新:我可能误解了这个问题。当提问者回答我在上面的评论中提出的问题时,我会更新这个答案。

于 2014-01-05T02:10:58.303 回答