我有一个循环遍历 vector 的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类中)存储在 vector 中,
这样我以后可以使用Model3D的名称检索它。
是否有更好的方法可以做到这一点?因为似乎我的方式并不是很好的编程方式...

最佳答案

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

Model3D *model = *it;

并且在此变量的上下文块结束时(即,从此方法返回时)将被销毁。它只是静态分配的指针。

动态分配是使用new运算符完成的,没有任何函数。

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

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

关于c++ - 我的代码会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16876100/

10-13 06:44