基本上我有一个 A 类,它在构造时创建一个数组。
class A
{
public:
A (float height, float width, BYTE* data)
{
setsize(height,width);
mydata = CreateNewBuffer(sizes);
setdata(data);
}
~A()
{
}
void setsize(float height, float width)
{
sizes.cx = width;
sizes.cy = height;
}
BYTE* CreateNewBuffer (SIZE sImage)
{
return new BYTE [sImage.cx * sImage.cy];
}
void setdata(BYTE* data)
{
memcpy(threatdata,data,sImage.cx * sImage.cy);
}
}
我在更大的类中创建了指向此类的指针:
A* mypointer;
在通过一个函数传递它之后,我在第 3 类中对其进行了初始化:
3rdClass::instance()->myfunction(mypointer)
在函数 myfunction() 中,我设置了一个 bool 值来指示该类已构造
mypointer = new A(height,width,data);
wasconstructed = true;
现在,下次我将指针传递给函数 myfunction()
时,我检查类是否已经构造,如果是,我想删除它以便它创建一个没有失忆的新的。
正确的做法是什么:
我尝试了基本的东西,比如,
if (3rdClass::instance()->checkifconstructed()){
delete mypointer; //(or even delete [] mypointer but then i get heap corruption)
mypointer = NULL;
}
但这似乎行不通。
最佳答案
我假设 mydata
是您类(class)的成员(否则,您代码的第 7 行中的 mydata
是什么?)
因此,动态数组是您的类的成员。如果你想在包含对象被销毁时销毁它,你应该这样做:在你的类的析构函数中命令销毁你的成员。像这样的东西:
~A()
{
delete [] mydata;
}
现在,当您调用 delete mypointer
时,它将调用类的析构函数,这将销毁数组。
关于c++ - 删除指向创建数组的类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198908/