如何从Lua上下文中卸载代码

时间:2014-11-19 05:25:17

标签: c++ memory-management lua

这里的上下文是嵌入在C ++应用程序中的Lua。

我已经使用了luaL_loadbuffer()函数很长时间了,它运行正常。

但是,现在我需要卸载。我为什么要这样做?

我有内部C ++映射,我想用Lua脚本初始化,但是一旦C ++映射初始化,就会抛出每个Lua脚本。 Lua表使用了更多的内存(7兆而不是C ++的200k),并且无法完成我需要的lower_bound()upper_bound()等功能。

地图元素是std::pair<uint32_t, uint32_t>,基本上是以二进制文件存储的IP地址。

任何方法可以卸载在执行一次后被加载到Lua上下文中的Lua代码吗?

1 个答案:

答案 0 :(得分:0)

如果通过 unload 意味着撤消运行某些Lua代码的效果,那么除非在运行代码之前保存珍贵的状态,否则无法完成。这可以通过沙箱代码来完成。

如果您只想删除Lua表,请设置为nil所有对它的引用,并让表自动或手动收集。