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

image


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();//内存泄漏

posted @ 2025-10-23 15:45  我不是萧海哇~~~  阅读(2)  评论(0)    收藏  举报