我的类的静态实例函数不能像我预期的那样工作

时间:2014-06-25 08:14:14

标签: c++ class instance

我写了一个这样的课:

class memUsage {
    public:
     memUsage();
     void addByte(int amount);
     int   used_byte(){return total_byte;}
     static memUsage* Instance(){return new memUsage();}   

private:
   int total_byte;
};

memUsage::memusage()
{
   total_byte = 0;
}

memUsage::addByte(int amount)
{
 total_byte +=amount;
}

然后我用它来调用它:

memUsage::Instance()->addByte(512);
memUsage::Instance()->addByte(512);

此函数始终返回0:

int test  = memUsage::Instance()->used_byte();

我从不记得的地方复制了实例设计,所以我不知道这是否是正确的方法,或者我需要改变什么?

1 个答案:

答案 0 :(得分:3)

Instance函数每次调用时都会创建一个新实例,所以

memUsage::Instance()->addByte(512);
memUsage::Instance()->addByte(512);

在两个不同的对象实例上调用addByte

由于Instance每次调用时都会创建一个新对象,但是你永远不会释放该对象,你也会有内存泄漏。


单例“get instance”函数通常看起来像

static memUsage* Instance()
{
    static memUsage instance;
    return &instance;
}