通常我使用#define MY_PARRENT_THE_FIRST 1
来减少使用内存。
我在C ++中搜索了一个关于此的最佳等价,我发现了两个:
首先使用枚举:
enum class MyParrent : char
{
theFirst = 1,
theSecond = 6,
theThird = 64
}
第二个使用命名空间和变量:
namespace MyParrent
{
char const theFirst (1);
char const theSecond (6);
char const theThird (64);
}
但是我无法确定其中是否有任何内容占用了#define MY_PARRENT_THE_FIRST 1
语句。
在C ++中实现相同的无内存占用的最佳实践是什么(内联插入值而不是分配内存并在那里插入值)?
答案 0 :(得分:0)
类型不占用运行时内存,只有值。这是因为生成的可执行文件不需要存储有关类型的所有内容,但需要存储大多数变量。您的enum MyParrent
是一种类型且不占用内存,但类型enum MyParrent
的值占用一个字节的内存,因为enum MyParrent
的基础类型是char
。当您在第二个示例中定义变量时,这肯定会占用内存。
PS:您对MY_PARRENT_THE_FIRST
的定义扩展为整数文字1
,并且在某些情况下可能会在运行时占用内存,因为整数文字的类型为int
或甚至更宽整数类型。您可以通过以下方式验证:
auto const var = MY_PARRENT_THE_FIRST;
static_assert(sizeof(var) > sizeof(MyParrent), "");