1

我有一个类(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();
}
4

0 回答 0