我正在开发一个基本上只是执行 lua 脚本的 c++ 程序。然而,在那个 lua 脚本中构造了类,这些类已从我的 c++ 程序导出到 lua 脚本。
我的 main() c++ 函数只是在一些准备工作后调用...
luabind::call_function<void>(m_L, "main");
现在我的 lua 脚本看起来像这样
local function test()
local c = C()
end
function main()
for i=1,2 do
log(i)
test()
end
end
我已经包含了一个 std::cout << "destructor" << std::endl; 在 C 的析构函数中,所以我知道它何时被调用。我希望每次执行 test() 结束时,lua 的垃圾收集都会调用 c 的析构函数,因为那是它超出范围的时候。相反,我看到以下输出:
1
2
destructor
destructor
而不是
1
destructor
2
destructor
有谁知道这是为什么?我在这里错过了什么吗?