可以读入进程内存的最大块大小是多少?

  • 本文关键字:多少 进程 内存 c++ boost
  • 更新时间 :
  • 英文 :


我需要读取一个大文件,但除了程序参数外,用户还提供了块大小。必须将每个块读入内存才能对块进行哈希处理。我怎么说这是我可以读入进程内存的最大块大小?

比如说,我正在使用 Boost 的mapped_region。有一个参数size它是区域的大小。 所以我想知道我可以传递到mapped_region构造函数的最大大小。

C++标准指定的对象最大大小的最小实现限制为 262 144 字节。允许实现支持更大的对象,并且许多实现都支持。

另一个限制是地址空间的大小。例如,在 32 位地址空间中,可以寻址不超过 232字节的内存。此外,其中一些地址空间(通常为一半或四分之一(将保留给操作系统内核。

此外,潜在的限制是系统上可用的物理内存量(包括交换( - 除非操作系统过度提交内存,并且对象的内存永远不会写入。

此外,某些操作系统可能会限制进程可能分配的内存总量,例如 POSIX 上的RLIMIT_DATA

最新更新