gpt4 book ai didi

c++ - 由于 delete 运算符导致资源泄漏

转载 作者:行者123 更新时间:2023-11-28 07:30:36 25 4
gpt4 key购买 nike

这是我写的代码:

class sCircBuffer
{
public:
sCircBuffer(void);
~sCircBuffer(void);
double *Data;
int Size;
bool Init(int SizeBuffer);
bool Delete();
}

sCircBuffer :: sCircBuffer(void) //Constructor
{
Data=NULL; //Initialize input circular buffer
}

sCircBuffer :: ~sCircBuffer(void) //Destructor
{
delete [] Data; //Initialize input circular buffer
Data=NULL;
}

bool sCircBuffer :: Init(int SizeBuffer)
{
delete [] Data; //Initialize input circular buffer
Data=new double [SizeBuffer]; //Initialize input circular buffer
Size=SizeBuffer;
for (int i=0; i<Size; i++)
Data[i]=0;
return true;
}

bool sCircBuffer :: Delete()
{
delete [] Data; //Initialize input circular buffer
Data=NULL;
return true;
}

我正在另一个类中创建上述类的对象:

class PerChannel
{
public:
PerChannel();
~PerChannel();

sCircBuffer m_InputDataRaw;
}

PerChannel :: PerChannel()
{
m_InputDataRaw.Init(MAX_NUM_TO_FETCH); // MAX_NUM_TO_FETCH = 1000
}

PerChannel :: ~PerChannel()
{
m_InputDataRaw.Delete();
}

在 Coverity 和 C++ 内存验证器中,我在 PerChannel 的构造函数中遇到资源泄漏错误。

我不确定这里有什么问题?

非常感谢您的帮助。

金丹

最佳答案

sCircbufferinit 方法中,您尝试delete [] 一个指向NULL 的指针。

关于c++ - 由于 delete 运算符导致资源泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812661/

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