c++ - cpp 中枚举的内存要求是多少?

标签 c++ memory enums

我正在创建一个包含许多部分的大规模模拟,我正在使用枚举来区分多个部分。我想知道使用枚举的内存成本是多少,因为我想将该部分占用的空间保持在最低限度。

使用 uint8_t 而不是枚举更好吗?

最佳答案

在 C++(任何版本)中,默认情况下枚举的基础类型是 int,除非每个枚举值都不能表示为 int。 在这种情况下,使用实现定义的类型(一个大到足以表示每个枚举器值的类型)。请注意,int 的大小取决于您的机器。它可能是 16 位,但也可能是 32 位(即使在 64 位机器上)。最终由编译器决定。

从 C++11 开始,您可以在声明枚举时指定底层类型,使用以下形式:

enum name : underlying_type { ... };

// For example
enum MySmallEnum : char { ... };

来源:cppreference.com

In C ,它似乎遵循与 C++(C++11 之前)相同的规则。

关于c++ - cpp 中枚举的内存要求是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998933/

相关文章:

c++ - 生成迷你文本转储 LInux

c++ - 将 const char * const 参数的成员分配给新值

c++ - 将 mysql embedded 和 --local-infile=1 与 c++ 一起使用?

memory - 带有 STL 向量的 shm_open 和 mmap

generics - 将枚举添加到泛型类时 Xcode 构建错误?

c++ - vector 迭代器

c++ - 可能丢失在 pthread_create 的丢失记录中

Python 大循环发生内存错误

java - 为什么枚举上的开关需要默认值?

c# - 使用反射和 PropertyInfo 无法识别我的枚举