0

我在用

  1. unistd.h
  2. 系统/stat.h

有趣的是它st_size大于之后返回的值read()st.st_size回报644-read()回报606,有什么想法吗?

4

2 回答 2

0

内存以多个块 (st_blocks) 的形式分配。您注意到的剩余字节是由于块对齐。

如果您检查 的值,st.st_blocks您会发现它是 的一个很好的除数644,而不是 606。

因此,如果您想知道数据占用的实际大小,请不要使用st_size.

于 2013-03-18T20:57:16.353 回答
0

文件大小和流大小可能不匹配。例如,当您以文本模式打开文件时,操作系统可以将多字节 EOL 序列转换为单个字符。这在 Windows 上通常是可见的,但如果你在 Linux 上有一个 Windows 文件,效果可能是一样的。

于 2013-03-18T20:57:58.333 回答