c++ - 函数返回后,指针指向无效内容

标签 c++ assimp

返回此const指针时出现问题。使用调试器向我展示了场景已正确导入并存储在可变场景中。返回场景后,场景所指向的内容将丢失,并且无法通过调用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;
}

(ImporteraiScene(struct)是assimp库的一部分,无法修改)

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

最佳答案

您忘记阅读documentation了。

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

或者,您可以将导入器存储在更永久的位置。但是如果您需要同时导入和使用许多场景,则可能效果不佳。

关于c++ - 函数返回后,指针指向无效内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798808/

相关文章:

c++ - Mac上的HPX构建会导致链接器错误

c++ - <>包含的文件找不到 “”包含的文件

c++ - QT按钮在小部件上按下

configuration - 配置 "install TARGETS given no RUNTIME DESTINATION for executable target "assimp_simpletexturedogl 时出现 CMake 错误”。

android - .obj到.glb转换

c++ - C++-错误C2568-表达式必须具有整数或无作用域的枚举类型

opengl - 使用 Assimp 加载 OBJ 模型时的视觉伪像

opengl - Assimp 骨骼动画 : Bones associated with a Vertex

c++ - OpenGL中的访问冲突

c++ - 在 C++ 或 C 中绘制 igraph 数据?