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 (および他のクラス) のインスタンスを追加する Abstract オブジェクトのリストができました。

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