Skip to content

Actor有一个Struct的成员变量,在Lua里引用,C++释放Actor后,Lua里的引用仍然可以直接使用,不会抛异常 #517

@wtmsuperman

Description

@wtmsuperman

比如这样一个结构体
1662546680470

在lua里
1662546725420

输出的日志:
LogUnLua: FMyStruct: 000002D1053630C0 10.0 MyStruct
LogUnLua: FMyStruct: 000002D1053630C0 10.0 MyStruct
LogTemp: Display: MyStruct,struct is released.
LogUObjectHash: Compacting FUObjectHashTables data took 1.20ms
LogUnLua: FMyStruct: 000002D1053630C0 0.0

这时其实是在访问一块被释放的内存。

看了一下源码,结构体成员变量是直接把指针直接压给lua用了;不同于UObject,UObject销毁后,指针会被改成Released;非UObject的指针就不会被管理了。

针对这种情况,是只能靠在Lua这边做约定吗?主动拷贝一下吗?有没有更好的办法?
目前看函数返回值是给一个拷贝,参数传过来是指针,Index也是指针。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions