【发布时间】:2021-04-15 20:39:53
【问题描述】:
我即将在我的项目中包含 Lua。只有一个问题,如果我链接我自己的类并在 Lua 中创建它,堆栈没有清理,我得到内存泄漏。内存不断增加。
我的班级:
class CTest
{
public:
CTest(std::string s)
: m_s(s)
{
std::cout << s << std::endl;
}
~CTest()
{
}
private:
std::string m_s;
};
C++ 测试代码:
auto state = luaL_newstate();
luaL_openlibs(state);
luabridge::getGlobalNamespace(state)
.beginClass<CTest>("Test")
.addConstructor<void(*)(std::string)>()
.endClass();
int iState = luaL_dofile(state, "Test.lua");
while (true)
{
int nStatus = 0;
lua_getglobal(state, "test");
nStatus = lua_pcall(state, 0,0,0);
}
Lua 代码
local ii = 0
function test()
local i = Test("Hallo " .. ii)
ii = ii + 1
end
我正在使用 Lua 5.2.0。
【问题讨论】:
-
无法复制。记忆对我来说是不变的。
-
你也用过 LuaBridge?
-
是的。我按原样使用了您的确切代码,只是在它之前添加了
#includes 并在它周围添加了一个main函数。 -
LuaBridge 的哪个版本?
-
与其问我使用的是什么版本,不如编辑您的问题以包含您使用的版本?还有 Lua 本身的版本