我有一个module
特定模块派生的抽象类。在运行时,我解析一个配置文件并确定配置文件中每个模块的具体模块类型:
std::vector<module*> modules;
module *temp;
//Let nm be the result of parsing as a std::string
if(nm == "type1")
{
temp = new module_1(...);
}
else if(nm == "type2")
{
temp = new module_2(...);
}
else if(nm == "type3")
{
temp = new module_3(...);
}
else
{
//Syntax error
return -1;
}
modules.push_back(temp);
partition p;
p.modules = modules;
将向量modules
交给一个partition
类:
class partition
{
public:
//Member functions
private:
//...Other variables
std::vector<module*> modules;
};
完成这些模块指针后,为这些模块指针释放内存的正确方法是什么?我试图在partition
类的析构函数中删除它们,如下所示,但最终出现了分段错误:
partition::~partition()
{
for(unsigned i=0; i<modules.size(); i++)
{
delete modules[i];
}
}