【发布时间】:2013-06-01 18:49:41
【问题描述】:
我有这个遍历向量的 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 的名称检索它。 有没有更好的方法来做到这一点?因为看起来我的编程方式不太好……
【问题讨论】:
-
我猜这完全不正确 - 你为什么要比较指针?
-
如果 GetName() 返回一个为 char* 实现 == 的对象(比如 std::string),它可能是正确的。
-
我将所有模型存储在一个向量中,当我想检索它们时,通过名称记住它们会更容易。有没有更好的办法?
-
使用某种映射,例如 std::unordered_map<:string model3d>。它将为您提供一种通过名称访问模型的直接方式。
-
@MatthieuRouget
std::unordered_map<std::string, std::shard_ptr<Model3D>>会是更好的选择。
标签: c++ pointers memory memory-leaks