现在,当我经常使用嵌入式系统和严重的内存限制时,我记得我们必须非常注意所使用的类型以及它们的使用方式。现在,Windows程序员通常会仅仅因为您有几GB的内存而浪费空间。无论如何,我宁愿在没有必要的时候不要浪费,因为如果每个应用程序(和操作系统)都这样做,那么这一切都会累积起来,你最终会得到一台缓慢的 PC。
话虽如此,我正在考虑 C# 或实际上是 .NET 中的枚举类型,因为您使用哪种语言无关紧要。例如,如果我定义一个枚举类型,如下所示:
enum FreeEnumeration {
One,
Two,
Three
}
在物理内存中分配时,它是否占用与以下内容完全相同的字节数:
enum SpreadEnumeration {
One = 1000,
Two = 2000,
Three = 3000
}
对于那些不明白这一点的人,在某些(早期)编译器中,枚举通常作为查找表存储在内存中,因此第二个将占用大约 3000 个插槽。
现在,我倾向于相信在 .NET 中它们不是查找表,并且会占用 3 个整数加上任何其他信息的空间。还是我弄错了?只是好奇,我不想仅仅因为我想偷懒就用零填满记忆。
enum
的大小只是一个int
(默认情况下)。有关更多详细信息,请参阅 https://stackoverflow.com/a/20944766/396746。
枚举引用结构的大小只是其中元素的数量。