1. 程式人生 > >STL容器的記憶體管理

STL容器的記憶體管理

class Unit
{
public:
	Unit();
	Unit(int id);
	~Unit();

private:
	int id = -1;
};

Unit::Unit()
{
}

Unit::Unit(int _id) :id(_id){
	printf("Unit construction. id=%d\n", id);
}


Unit::~Unit()
{
	printf("Unit destruction. id=%d\n", id);
}

1、如果容器中儲存了物件指標,則要在清除容器前手動刪除指標,否則就會記憶體洩露。


	std::vector<Unit*> units;
	units.reserve(100);
	for (int i=0;i<3;++i)
	{
		units.push_back(new Unit(i));
	}

	for (Unit* ptr:units)
	{
		delete ptr;
		ptr = nullptr;
	}

2、如果容器中儲存了物件,存在多次複製的問題。建議儲存指標。