gpt4 book ai didi

c++ - 我的类的静态实例函数没有按预期工作

转载 作者:行者123 更新时间:2023-11-28 00:27:14 24 4
gpt4 key购买 nike

我写了这样一个类:

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();

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

最佳答案

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

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

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

而且 Instance 每次调用时也会创建一个新对象,但您永远不会释放该对象,因此也会发生内存泄漏。


单例“获取实例”函数通常看起来像

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

关于c++ - 我的类的静态实例函数没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24403466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com