所以 fread 在 Win7 x64 上的行为出乎意料。
file = fopen(path, "rb");
fseek(file, 0, SEEK_END);
fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
buffer = malloc(fileSize);
length = fread(buffer, fileSize, 1, file);
fread 将返回 1 个字节作为被读取而 (ferror 和 feof 都返回 0)
length = fread(buffer, 1, fileSize, file);
fread 将返回与 fileSize 读取的相同字节数。MSDN 说“fread 函数从输入流中读取最多 count 个大小字节的项目并将它们存储在缓冲区中。” 我将其解释为任何一段代码都应该读取相同数量的数据。有谁知道为什么 fread 没有像我期望的那样工作?