【发布时间】:2014-11-19 19:05:07
【问题描述】:
这里的上下文是嵌入在 C++ 应用程序中的 Lua。
luaL_loadbuffer()这个功能我用了很久了,很好用。
但是,现在我有卸载的需要。我为什么要这样做?
我有想用 Lua 脚本初始化的内部 C++ 映射,但是一旦初始化 C++ 映射,就扔掉每个 Lua 脚本。 Lua 表使用更多的内存(7 megs vs. C++ 的 200k)并且不能执行我需要的 lower_bound() 和 upper_bound() 之类的功能。
地图元素是std::pair<uint32_t, uint32_t>,本质上是以二进制形式存储的ip地址。
有什么方法可以在执行一次后卸载已加载到 Lua 上下文中的 Lua 代码?
【问题讨论】:
-
我认为删除所有对加载的 lua 的引用并让垃圾收集器完成其工作会很好。拆除 lua 状态并重新创建它也可以,尽管这有点像核选项。
标签: c++ memory-management lua