首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在处理大型文件(> 2GB)时将pos_type分配给uint64_t安全吗?

在处理大型文件(> 2GB)时将pos_type分配给uint64_t安全吗?
EN

Stack Overflow用户
提问于 2012-01-06 10:35:22
回答 1查看 1.8K关注 0票数 2

当试图以跨平台的方式处理大型文件(2/4GB)时,将pos_type转换为uint64_t是否安全?

  • 平台目标:运行当前Linux发行版、Windows、Mac.
  • 任务的桌面计算机:最接近标准的随机二进制文件访问(tellp

解决方案)、可移植和安全的.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-06 10:42:20

无论是在实践上还是理论上。就标准而言,我不认为可以保证pos_type甚至可以转换为一个完整的类型;从逻辑上讲,它不应该是这样的,因为它包含了几个独立的数据:文件状态信息的偏移量,用于多字节解码。

另一方面,在实践中,基于Unix的机器不应该有任何问题;在Windows下,如果以文本模式打开文件,数值并不一定有多大意义,但您可以将pos_type转换为uint64_t并返回,而不会丢失值(除非原始pos_type中确实存在显着的多字节状态,但我不知道在这种情况下有任何编码)。

应该可以在编译时确定pos_type是否将隐式转换为整数类型,并将其用于某种类型的static_assert。不过,我不认为这买得太多;它无法确定积分值是否在任何方面是可用的,除非重新转换回pos_type。(例如,它可能是某种魔法饼干。但我不会太担心。该标准允许许多无法合理实现的事情。请记住,即使在Windows下,该值也并不总是表示可以读取的确切字节数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8756496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档