我有一个类(MyClass),它是抽象类的子类。MyClass 有静态成员。当我删除 MyClass 对象时,堆会损坏,并且会出现各种内存冲突错误。为什么呢?静态成员被删除还是什么?
class CAbstractClass {
public:
CAbstractClass();
virtual ~CAbstractClass();
...
}
具有静态成员的 MyClass
class MyClass : public AbstractClass {
public:
static short s_static;
}
我用 MyClass::s_static = 2 等设置它的值。
静态成员在 .cpp 文件中初始化
short MyClass::s_static=1;
现在我有一个抽象对象列表,我在其中添加 MyClass (和其他类)的实例。
list<CAbstractClass*> *objectList;
MyClass *myclassobj=new MyClass();
objectList->push_back(myclassobj);
这份名单是这样删除的
clearAll() {
CAbstractClass *object;
std::list<CAbstractClass*>::iterator it;
for (it=this->objectList->begin(); !(it==this->objectList->end()); it++) {
object=*it;
if (object) delete object;
}
this->objectList->clear();
}