enum
定义enum
常量是否消耗C中的内存?
例如,如下所示
enum week { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };
枚举常量,例如,SUNDAY
占用内存吗?
答案 0 :(得分:2)
定义不占用运行时内存。它们显然在编译时占用了内存,但并不多。
如果您编写以下代码来声明变量(在此示例中为my_weekday
),则需要运行时内存。消耗的字节数取决于编译器,目标机器架构的对齐规则以及枚举的基数。
enum week my_weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY };
如果你的代码为这样一个变量分配一个常量,那么常量将占用代码内联空间或编译器构造的只读文字池中的空格。
my_weekday = SUNDAY;
如果将枚举常量(或此类常量的地址)作为实际参数传递给函数,它将在调用堆栈中获得分配的空间。请注意,一些topnotch全局优化可能会改为使用机器寄存器。
类似地,如果使用switch-case或条件语句,将为枚举常量分配代码空间或文字池空间。
答案 1 :(得分:0)
没有。这些是常量,不占用任何内存,也没有地址。事实上,SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
并不存在于记忆中的任何地方。但是你可以检查类型enum
本身是否占用int
大小的内存(类型的选择是实现定义的)。