>当我使用
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)
大空间。
所以,我错在哪里,任何帮助都是值得的。
你的代码说malloc(fsize)
但你想要的是malloc(fsize * sizeof(size_t))
。malloc
函数采用要分配的字节数。它无法知道您将使用内存来存储size_t
。
更新:我可能误解了这个问题。当提问者回答我上面评论中提出的问题时,我会更新这个答案。