【发布时间】:2018-12-16 03:28:10
【问题描述】:
Here is the introduction for size_t in cppref
std::size_t可以存储任何类型(包括数组)理论上可能的对象的最大大小。
我知道确切的值取决于平台。但是谁来决定theoretically possible object的大小,是编译器还是操作系统,甚至是计算机制造商?理论上可能的物体的大小是可以计算出来的还是人为的规则决定的?
另外,如果机器是 64 位的,那是否意味着最大对象大小可以是 2^64 字节?
【问题讨论】:
-
理论上限是您的实现可以解决的问题。带有编译器的 64 位机器发出 64 位代码以生成 64 位可执行文件,可以(理论上)寻址数量高达 2^64-1。由于(嗯)实际限制,实际上限小于该上限,例如在 64 位系统上运行的 32 位程序(如果操作系统支持)只能寻址 32 位,多少内存的配额一个操作系统可能允许一个进程分配,虚拟内存(粗略地说,物理 RAM 和交换空间的总和)可能比理论上可以解决的要少。