程序运行时enum是否占用内存?该怎么处理

程序运行时enum是否占用内存?
现在有个程序要运行在一个嵌入式系统里,因为内存很小(4MB),所以会考虑内存使用。

大量的enum是否会导致内存被占用?
以前的代码是使用#define,但是#define重定义是个问题。(更何况这个代码不是一个人写的).
以前可以运行的程序运行都没有问题,
似乎我用enum替代了#define之后,总是因为内存不足导致程序崩溃(也有可能是我其他地方代码错误)。

C/C++ code
// way A
#define MAX_CHAR_ARRAY_LENGTH 32

// way B
enum __em_define_
{
  MAX_CHAR_ARRAY_LENGTH = 32,
};

// way C
const int MAX_CHAR_ARRAY_LENGTH = 32;


way C这个是否会浪费很多内存?
这个会占用常量区,具体这个常量区属于系统还是属于当前程序,我就不知道了。
--------------
想问一下,way B或way C是否会造成多余的内存浪费?
或者有什么办法可以解决宏重定义的问题?
注:代码会分为在linux和window两个版本。


------解决方案--------------------
enum的元素不占任何内存。但是如果你要定义enum变量的话是会占内存的.
------解决方案--------------------
enum会占用,不过只有一个字节,这么介意么?三个里面,1不占内存 2占1个char,3占一个int

------解决方案--------------------
用预编译指令呢?
#ifdef XXXXXXX
define something
#else
define something
#endif
------解决方案--------------------
a是肯定不占内存的;b我没法告诉你占不占内存(详见我给你的例子);c可能占也可能不占(你按照最坏的情况考虑,就当作“占内存”处理好了)
下面是我给你举的例子:
enum __em_define_
{
MAX_CHAR_ARRAY_LENGTH = 32,
};
这个enum的话:
int i;//i肯定占内存。你懂得...

i = MAX_CHAR_ARRAY_LENGTH;//MAX_CHAR_ARRAY_LENGTH不会占数据段内存,编译后会直接变成i = 32;

但如果是下面的代码:
__em_define_ m = MAX_CHAR_ARRAY_LENGTH;
这里的m肯定是会占内存的,因为它是个变量了...
------解决方案--------------------
变量当然占用内存。
------解决方案--------------------
感觉不是这个导致的,这个根本占不了多少内存,
如果是工程超大的话,根本就在4MB下跑不起来,感觉是其他地方问题
------解决方案--------------------
探讨

enum会占用,不过只有一个字节,这么介意么?三个里面,1不占内存 2占1个char,3占一个int

------解决方案--------------------
探讨

那如果emun里枚举了148个成员,数字最大为0xFFFFFFA0。
那么这个时候enum会占用多少内存?

引用:

enum会占用,不过只有一个字节,这么介意么?三个里面,1不占内存 2占1个char,3占一个int

------解决方案--------------------
百度了一下,enum是不占空间,大概是我搞错了,怎么记成跟数目有关了?
------解决方案--------------------
探讨

跟数字没关系,只跟成员数目有关,148也一样是1个字节, 超过256就是2个,超过65536就是3个,类推

------解决方案--------------------
enum 的定义是不占用内存的,一般 使用了枚举类型才会占用。
就像我们定义class 是不占用 运行间的内存的,但是会占用代码段内存,但是 enum 是什么都不占用的,因为在编译阶段就被处理了。
------解决方案--------------------
你知道 4M 有多大么? 够你定义1000000 个int 了.
考虑下你的算法的优化吧.\


另外,enum 的定义不占运行时内存.无论里面有多少个元素.
enum 变量会占内存.
------解决方案--------------------
第1种不占内存,因为在预编译的时候会宏替换。
第3种是定义性声明了一个变量,占内存的。
第2种是如果是定义了一个枚举类型enum __em_define_ 变量也会占内存的,因为同第3种一样要存储变量,需要空间。
但是,在定义枚举类型enum __em_define_时里面的枚举常量占不占内存我就不清楚啦!!求高人指点。
------解决方案--------------------
内存分配有最小的粒度,多用1字节根本看不出变化,而且可能优化掉,变量不一定会占内存,只是逻辑上会给它一个空间,这个空间实现起来可以是内存,可以是寄存器,也可以啥都没有
------解决方案--------------------
探讨

你知道 4M 有多大么? 够你定义1000000 个int 了.
考虑下你的算法的优化吧.\


另外,enum 的定义不占运行时内存.无论里面有多少个元素.
enum 变量会占内存.