使用常量是否可以节省内存

时间:2018-01-29 14:16:46

标签: c++ memory arduino constants

我目前正在重构我为大学项目撰写的课程。

该课程将材料绘制到连接到Arduino Nano的TFT显示器上, 而且我想我不需要解释为什么微处理器中的内存很罕见, 特别是在Arduino Nanos上......

该类在屏幕上绘制GUI,在重构之前,我曾经为绘制相关的所有内容设置幻数,例如屏幕边缘的偏移量。

我能够用

重构这种东西
//constants for screen offsets
const int PROGMEM _titleHeight = 30;
const int PROGMEM _leftOffset = 22;
const int PROGMEM _charHeight = 15;
... more stuff here, you get the point

然后我想知道“这真的能省下任何记忆吗?” 我的意思是,最后我使用3个整数单元来实现相同的目标,这是96位“浪费”的空间。

除了它更易于阅读并且无论如何我将这些值填充到PROGMEM中这一事实,通常使用常数来节省优化方面的空间吗?

编辑:如果这些值是短路的话,它们的指针不是32位,因此会浪费16位吗?我弄错了吗?

1 个答案:

答案 0 :(得分:5)

即使在调试版本中,老式程序员节省资源的一种方法是使用枚举:

enum {
    _titleHeight = 30,
    _leftOffset = 22,
    _charHeight = 15
};

现在这些值肯定没有使用内存。但是,优化编译器应使用const int值得出相同的最终结果。

唯一可以确定的方法是尝试并测量。