【发布时间】:2009-08-28 07:28:53
【问题描述】:
我正在研究嵌入式系统,所以内存对我来说很宝贵。
一个反复出现的问题是,我在尝试为其编译程序时内存空间不足。这通常通过限制可能占用大量空间的 typedef 的数量来解决。
有一个宏生成器,我用它来创建一个包含很多#define 的文件。 其中一些是简单的值,另一些是边界检查
即
#define SIGNAL1 (float)0.03f
#define SIGNAL1_ISVALID(value) ((value >= 0.0f) && (value <= 10.0f))
现在,我不使用所有这些定义。我使用了一些,但实际上不是大多数。 有人告诉我,如果不使用它们,它们实际上不会占用任何内存,但我不确定这一点。我希望通过删除未使用的内存来释放一些额外的内存(但我再次被告知这是没有意义的)。
未使用的#define 是否占用任何内存空间?
【问题讨论】:
-
你是说你在嵌入式系统上编译软件?
-
不,很抱歉造成混乱。我在windows下编译生成二进制文件
-
那么您在编译或运行可执行文件时是否空间不足?
-
typedefs 在编译后的图像中也不占用空间(尽管用它们定义变量可能)。
-
什么类型的空间快用完了?用于变量的 RAM? ROM代码?您说“在转换(直接在编译后)到我们特定的二进制格式期间空间不足。”我不太明白这意味着你的空间用完了。
标签: c embedded memory-management