【发布时间】:2013-05-11 20:45:47
【问题描述】:
class MyClass
{
public:
enum ErrorCodes
{
ERR_SUCCESS = 1,
ERR_READ = 2,
ERR_WRITE = 3,
// ...
ERR_ALLOCATE = 99,
ERR_DELETE = 100
};
ErrorCodes DoSomething();
};
MyClass::ErrorCodes MyClass::DoSomething()
{
// ...
return ErrorCodes::ERR_SUCCESS;
}
在我的示例代码中,有一个很长的 enum 定义,其中包含 100 个变量。假设每个变量拥有 4 个字节的内存,enum 将使用 400 个字节的内存。一旦我开始创建这个类的对象会发生什么?每个对象会因为这个enum而消耗额外的400字节内存,还是enum会在这个类的所有对象之间共享,这样无论初始化的类实例的数量如何,都只会使用固定的400字节?
如果要为每个实例使用 400 字节的内存,在这种情况下我可以使用什么替代方法?
【问题讨论】:
-
枚举只是数字的名称——它们不会“存储”在任何地方。
标签: c++ class optimization memory-management enums