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

标签 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;
}

(ImporteraiScene(struct) 是 assimp 库的一部分,不能修改)

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

最佳答案

您忘记阅读 documentation .

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

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

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

相关文章:

c++ - 应该将 float 转换为字节数组的程序中的运行时错误

c++ - Assimp 链接器错误 - undefined reference

c++ - 翻译 Assimp 3D 模型也旋转

C++ 读取和编辑位图图像的像素

assimp - 如何使用 gltf 格式通过 Assimp 加载粗糙度/金属贴图?

c++ - Assimp链接错误

c++ - 简单的 Assimp 程序提供不正确的数据

c++ - 异常对象的静态类型

c++ - C++ 17 中 Clang 的不明确部分特化

c++ - 在 C++ 的构造函数中初始化一个数组