C++中最大的数据类型是什么

What's the biggest data type in C++

本文关键字:数据类型 是什么 C++      更新时间:2023-10-16

我在 c++ 中搜索了最大的数据类型,但每个站点编写的数据类型都不同。如果有专家,他(她(能写出答案吗?这很重要。谢谢。

它(标量类型的最大大小(是特定于实现的

你可能会有一些奇怪的实现,64位宽的charsizeof(char)sizeof(int)sizeof(long)sizeof(long long)sizeof(void*)都是1。

我不知道 C++11 的这种实现,但我听说过 SBCL 上方的奇怪 C99 实现在做类似的事情。我可能错了。

AFAIK,long long应至少为 64 位宽。而且long double通常比这更宽(但我不知道标准要求它是什么(。

此外,实现可以具有额外的(和特定的(内置类型,例如 _int128_t最近的一些海湾合作委员会

如果你关心最大的对齐方式,这是一个稍微不同的问题,看看这个。(16 字节在 x86-64 上是一个很好的对齐方式,例如因为 AVX(。

当然聚合(例如 struct或数组(可以具有相当大的大小(在GCC上,比内置类型更大的对齐方式(。

聚合的实际最大大小肯定受到虚拟地址空间的限制(因此,平板电脑或笔记本电脑上只有几千兆字节,如果您足够富有,可以访问一些昂贵的超级计算机,则为数TB甚至PB(。

但是,调用堆栈实际上通常限制为几兆字节(或在昂贵的超级计算机上为千兆字节(。因此,巨大的数据结构最好在堆上分配(请注意,像std::vector这样的 STL 容器通常将其大部分数据分配到堆中,即使容器是局部变量也是如此(。

具体来说,在堆上分配超过几 GB 的连续区域(这可能会在您的平板电脑上失败(时要小心。

我很确定你不会得到比这更大的类型:

struct Big
{
    char buf[static_cast<size_t>(-1)];
};