当我使用

  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只会给我返回大空间。
所以,我错在哪里,任何帮助都会被告知。

最佳答案

你的代码是malloc(fsize)但是你想要的是malloc(fsize * sizeof(size_t))malloc函数接受要分配的字节数。它无法知道您将使用内存来存储size_t
更新:我可能误解了这个问题。当发问者回答我在上面的评论中提出的问题时,我会更新这个答案。

10-08 15:20