我有这个for循环遍历一个向量。 然后它检查给定的名称是否等于模型的名称。
最后,它创建一个指针并返回它。现在我的问题是,如果我不删除指针,是否会有任何内存泄漏?
Model3D* ModelMemory::GetModel(char* name)
{
for (std::vector<Model3D*>::reverse_iterator it = mModels->rbegin();it != mModel->rend();it++)
{
Model3D *model = *it;
if (model->GetName() == name)
{
return model;
}
}
}
感谢您的帮助!
- 编辑 -
所以我的目标是将我的所有3D模型(存储在Model3D类中)存储在一个向量中, 这样我以后可以使用Model3D的名称来检索它。 有没有更好的方法来做到这一点?因为看起来我的方式不是很好的编程...
答案 0 :(得分:3)
不,不会有内存泄漏,当然如果你以后删除所有型号。另外,使用strcmp()来比较两个字符串
答案 1 :(得分:1)
您没有动态分配任何内存。这是静态分配
Model3D *model = *it;
,当此变量的上下文块结束时(即从此方法返回时),它将被销毁。它只是静态分配的指针。
动态分配是使用new
运算符完成的,并且没有。
检查泄漏的简单规则是每delete
个new
。
您可以使用valgrind
终端工具检查内存泄漏。