c++ 容器clear函数无法释放对象

class MyClassA
{
public:
MyClassA():b(new char[12]) {
memset(b, 0, 12);
strcpy(b,"hello");
cout << "构造" << endl;
}
~MyClassA() {
if (b) {
cout << "析构" << endl;
delete[]b;
}
}
void showInfo() {
cout << b << endl;
}
private:
char* b=nullptr;
};
list<MyClassA*>lll;
MyClassA* a1 = new MyClassA();
lll.push_back(a1);
list<MyClassA*>::iterator it;
for (it = lll.begin(); it != lll.end();) {
(*it)->showInfo();
MyClassA* t = (MyClassA*)(*it);
it = lll.erase(it);
delete t;
}
//错误代码:
lll.clear();//内存泄漏

浙公网安备 33010602011771号