返回指针会弄乱对象(访问冲突)

时间:2013-11-23 14:16:07

标签: c++ pointers access-violation assimp

我正在摆弄assimp和C ++,我写了一个简单的函数来从文件中加载一个场景。但是,当我尝试返回指针时,如果我尝试检索成员数据,则对象变得混乱并且我会获得访问冲突。这段代码应该证明这种情况:

const aiScene* ResManager::loadScene(const std::string& pFile)
{
    Assimp::Importer importer;
    const aiScene* scene = importer.ReadFile(pFile, aiProcessPreset_TargetRealtime_MaxQuality);
    if(!scene)
    {
        printf("%s\n", importer.GetErrorString());
        return 0;
    }

    // If I break the debug here, 'scene' is valid
    return scene;
}

void ResManager::loadFromFile(const std::string& pFile)
{
    const aiScene* scn = loadScene(pFile);
    // If I break the debug here, 'scn' contains gibberish
}

我认为我错过了一些关于指针和内容的重要信息。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

因为看起来importer在函数结束时会破坏,因此对象scene不再指向有效指针。 我认为用{/ 1>动态分配importer

   Assimp::Importer *importer = new Assimp::Importer; 

应该这样做。

稍后您应该使用

销毁此对象

delete importer;