函数返回后指向无效内容的指针

Kim*_*rak 2 c++ assimp

我在返回这个 const 指针时遇到了问题。使用调试器向我展示了场景已正确导入并存储在可变场景中。返回scene后,scene指向的内容丢失,调用loadData()的类无法访问。

const aiScene* IOHandler::loadData(const std::string& pFile){
    Assimp::Importer importer;

    const aiScene* scene = importer.ReadFile(pFile,
    aiProcess_CalcTangentSpace      |
    aiProcess_Triangulate           |
    aiProcess_JoinIdenticalVertices |
    aiProcess_SortByPType);

    return scene;
}
Run Code Online (Sandbox Code Playgroud)

Importer并且aiScene(struct)是assimp库的一部分,不能修改)

我假设场景存储在堆栈中,返回调用重置堆栈指针并且内容丢失。如何在c++中处理这样的问题?

Mik*_*our 6

你忘记阅读文档了

该场景归 拥有Importer,因此当超出范围时它将被销毁。返回importer.GetOrphanedScene()获取所有权,并记住在完成后将其删除。

或者,您可以将进口商存储在更永久的地方;但如果您需要同时导入和使用多个场景,这可能不太好。