阅读 Meyers 的书(第 2 项“Prefer const to #define)我想理解下面列出的一些句子:
参考
#define ASPECT_RATIO 1.653
和const aspect_ratio = 1.653
Meyers 之间的比较,“......在浮点常量的情况下(例如在此示例中),使用常量可能会产生比使用更小的代码#define
。” 问题是:迈耶斯的代码越小,可执行文件的磁盘空间就越小?为什么它更小?我认为这在 32 位系统上可能是有效的,因为在这种情况下,一个int
(或指针)需要 4 个字节和一个双 8 个字节。因为ASPECT_RATIO
可能不会进入符号表,所以名称被替换为值,而在其他情况下可以使用const
指向唯一双精度值的指针。在这种情况下,这个概念在 64 位机器上将不再有效(因为指针和双精度是相同的字节数)。我不知道我是否很好地解释了我的意思,尤其是这个想法是否正确?然后迈耶斯问“......虽然好的编译器不会
const
为整数类型的对象留出存储空间(除非你创建一个指针或对对象的引用),但草率的编译器可能会,你可能不愿意为这样的对象留出内存对象...”在这种情况下,内存是正在执行的进程占用的 RAM?如果验证这一点是正确的,我可以使用任务管理器(在 Win 中)或顶部(在 Linux 中)吗?