我有以下代码。我的程序有一个基类,即c1。 c2和c3是它的派生类。我也有一个名为FilmDB(数据库)的课程,它将我所有的电影存储在一个阵列中,其名称是电影。在这些if语句中,我根据其类型将电影放入此数组中。 (测试条件)。它工作得很好,但是f,cs,d永远不会自由,内存泄漏来了。问题是我不能在if语句中使用delete [],因为我的程序崩溃了,但是我不能在外面使用它,因为在我看来,f,cs,d不可见。 Memtrace显示泄漏,因为f,cs和d。如何在这种情况下释放记忆?
if(test == "a"){
Class2 *c2 = new Class2(param1,param2,param3,param4);
films[i] = c2;
}
else if(test == "b"){
Class3 *c3 = new Class3(param1,param2,param3,param4);
films[i] = c3;
}
else {
Class1 *c1 = new Class1(param1,param2,param3);
films[i] = c1;
}
我的FilmDB类有一个虚拟析构函数,它迭代数组并删除它,但它似乎无法解决我的问题。
for(int i = 0; i < n; i++)
delete films[i];
编辑来自备注:
我不允许使用std::vector
在我的任务
你应该使用_std :: vector_并避免使用_delete_在C++ – granmirupa
中提供一个合适的问题。我们不能从中理解。 – coderredoc
'Csaladi','Dokumentum'和'Film'有共同的基础类吗?这个类是否具有虚拟析构函数?电影计数是否正确? –