当我使用
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
。
更新:我可能误解了这个问题。当发问者回答我在上面的评论中提出的问题时,我会更新这个答案。