除了每种类型可以容纳的值的大小之外,还有哪些主要区别usage之间size_t
and off_t
?这只是一个惯例吗size_t
类型用于绝对大小和off_t
类型用于偏移?还是比这更深入?
我正在编写一个包装类来启用使用写入大文件mmap
我想知道他们的论点最适合使用什么类型。鉴于我想写入 > 4GB 的文件,我很想对所有内容使用 size_t,但这是最佳实践吗? (或者我应该使用一些off64_t
某些功能的类型?)
例如,我应该writeAt
函数声明为:
MMapWriter::writeAt(off64_t offset, const void* src, size_t size)
or
MMapWriter::writeAt(size_t offset, const void* src, size_t size)
size_t
是针对对象的,off_t
用于文件。
mmap
几乎根据定义,合并了这两个概念。我个人认为我会使用size_t
,因为无论它是什么,映射文件也是(虚拟)内存中的数组。
size_t
是标准C++,off_t
是 Posix,并且off64_t
是一个 GNU 扩展,具有以下功能fopen64
, ftello64
等我think它应该始终与以下类型相同off_t
在 64 位 GNU 系统上,但不要在没有检查的情况下把你的公司押在这一点上。
如果相关的话,off_t
已签名,而size_t
是未签名的。但签署的副本size_t
is ptrdiff_t
,所以当您需要签名类型时,它并不自动意味着您应该使用off_t
or off64_t
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)