c++ - 指针引用可能检测到内存泄漏?

标签 c++ pointers reference

我有内存泄漏吗? 我正在构建一个游戏引擎,我有一些我认为正确的代码,但我的代码分析工具 ( cppcheck ) 说我有内存泄漏,这可能是误报。

我有一个(这是一个简单的用例)

class Mesh
{
D3DMATERIAL9* mpMaterials;
LPDIRECT3DTEXTURE9* mpTextures;

D3DMATERIAL9*& GetMaterials() { return mpMaterials; }
LPDIRECT3DTEXTURE9*& GetTexures() {return mpTextures; }
};

在我的网格类中我有一些 directx 指针 当我加载网格时,我将 shared_ptr 发送到要加载的图形管理器类中的函数。

我在那个函数里做

void Renderer::LoadMesh( shared_ptr<Mesh> myMesh)
{
// other code
D3DMATERIAL9*& pMaterials= myMesh->GetMaterials();
LPDIRECT3DTEXTURE9*& pTextures= myMesh->GetTextures();
// other code

// and then instantiate them

pMaterials = new D3DMATERIAL9[matCount];
pTextures = new LPDIRECT3DTEXTURE9[texCount];

// And then i do some stuff with those objects.
}

现在在这个函数的末尾,cpp 检查说 pMaterials 和 pTextures 泄漏了它们的内存。据我了解,pMaterials 和 pTextures 是对 myMesh 中指针的引用,并且我实例化的内存存在于那里,因为 Mesh 类中的指针指向该实例化内存,并且只要我稍后适本地销毁 Mesh 对象(并调用 delete[] mpMaterials; delete[] mpTextures; 在 Mesh 析构函数中)我没有泄漏内存吧?

最佳答案

我在 cppcheck 中编写了内存泄漏检查。我同意这是误报。我会修复它。

请随时在 cppcheck 问题跟踪器中报告它。

关于c++ - 指针引用可能检测到内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407175/

相关文章:

c++ - 那么我在哪里可以找到最好的在线 C++ 标准库引用资料?

c++ - 函数重载优先级(引用)

c++ - 用随机数初始化二维数组

c++ - 有没有办法在给定的 int32_t 上重用 std::atomic ?

c++ - 指向非静态成员函数的函数指针

c++ - 点运算符和点运算符有什么意义?

java - 为什么当 grails 项目作为 grails-app 运行时,我的 java 项目中的包无法编译,java 项目引用了 grails 项目

c++ - 什么时候应该使用命名空间和单独编译? (是否可以在类外使用单独编译?)

c++ - 使用 C API 的奇怪的 lua 推送/弹出行为

c++ - 构造动态对象时取消引用