这里的上下文是嵌入在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代码吗?
答案 0 :(得分:0)
如果通过 unload 意味着撤消运行某些Lua代码的效果,那么除非在运行代码之前保存珍贵的状态,否则无法完成。这可以通过沙箱代码来完成。
如果您只想删除Lua表,请设置为nil所有对它的引用,并让表自动或手动收集。