我有Lua 5.4
嵌入到项目中
并已实施
__close
用户数据的元方法,它是一个数字向量。该项目有自己的脚本编辑器,能够运行脚本。实施
__关闭
与
__gc
元方法,如下所示:
int Vector_gc(lua_State* L)
{
CVector<double>* vector = *(CVector<double>**)lua_touserdata(L, 1);
delete vector;
return 0;
}
1.
在脚本文件中,运行以下脚本时,根本没有问题:
local vector=std.rand(5000) --generate 5000 random numbers
vector=nil
collectgarbage()
2.
同样,如果我多次运行以下脚本文件,也完全没有问题:
local vector <close> = std.rand(5000)
3.
但是,以下脚本使用
collectgarbage
当运行多次导致崩溃时:
local vector <close> = std.rand(5000)
collectgarbage()
编辑1:
4.
以下情况会立即导致崩溃。
if(true) then
local vector <close> = std.rand(5000)
vector[2]=1
end
collectgarbage()
我是否误解/遗漏了即将成为闭变量的东西?