1

我有这个遍历向量的 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 的名称检索它。有没有更好的方法来做到这一点?因为看起来我的方式不是很好的编程......

4

2 回答 2

3

不,不会有内存泄漏,当然如果你以后删除所有模型。另外,使用 strcmp() 比较两个字符串

于 2013-06-01T18:56:48.067 回答
1

您没有动态分配任何内存。这是静态分配

Model3D *model = *it;

当这个变量的上下文块结束时(即当你从这个方法返回时)它会被销毁。它只是静态分配的指针。

动态分配是由new操作员完成的,没有。

检查泄漏的简单规则是delete每个new.

您可以使用valgrind终端工具检查内存泄漏。

于 2013-06-01T19:10:11.857 回答