抽象クラスのサブクラスであるクラス (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();
}