(T)可以产生的最大值大小是多少?

fre*_*low 8 c++ memory pointers sizeof size-t

起初人们可能会想std::numeric_limits<size_t>::max(),但如果有一个巨大的物体,它还能提供一个一个接一个的指针吗?我猜不会.这是否意味着最大的价值sizeof(T)可以产生std::numeric_limits<size_t>::max()-1?我是对的,还是我错过了什么?

Rob*_*obᵩ 3

\n

问:sizeof(T) 能产生的最大值是多少?

\n
\n\n

A:std::numeric_limits<size_t>::max()

\n\n

显然, sizeof 不能返回大于 的值std::numeric_limits<size_t>::max(),因为它不适合。唯一的问题是,它能回来吗...::max()

\n\n

是的。这是一个有效的程序,不违反 C++03 标准的任何约束,它演示了示例证明。特别是,该程序不违反 \xc2\xa75.3.3 [expr.sizeof] 和 \xc2\xa78.3.4 [dcl.array] 中列出的任何约束:

\n\n
#include <limits>\n#include <iostream>\nint main () {\n typedef char T[std::numeric_limits<size_t>::max()];\n std::cout << sizeof(T)<<"\\n";\n}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 这里有很多关于“可以返回的最大值`sizeof(T)`”和“实际可以实例化的最大变量”之间的区别(甚至忽略任何给定计算机的实际内存容量);-) (4认同)