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

标签 c++ memory-management lua

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

我使用了函数luaL_loadbuffer()很长一段时间,它工作正常。

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

我有内部 C++ 映射,我想用 Lua 脚本对其进行初始化,但是一旦 C++ 映射被初始化,我就会丢弃每个 Lua 脚本。 Lua 表使用更多的内存(7 兆与 C++ 的 200k)并且不能执行像 lower_bound() 这样的功能。和 upper_bound()我需要的。

map 元素是std::pair<uint32_t, uint32_t> ,本质上是以二进制形式存储的 ip 地址。

有什么方法可以在执行一次后卸载已加载到 Lua 上下文中的 Lua 代码?

最佳答案

如果unload 是指撤消运行某些 Lua 代码的效果,那么除非您在运行代码之前保存宝贵的状态,否则无法完成。这可以通过对代码进行沙盒处理来完成。

如果你只是想删除一个 Lua 表,将所有对它的引用设置为 nil 并让该表自动或手动进行垃圾回收。

关于c++ - 如何从 Lua 上下文中卸载代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009588/

相关文章:

c++ - 阻塞信号导致升压过程不起作用

c++ - C/C++ : Write and Read Sockets

c++ - 异常后执行从哪里恢复?

string - Lua中阿拉伯字母的长度

c++ - 如何高效存储时序数据

c - 以下程序是否会导致内存泄漏?

c - 正在释放的指针未分配/段错误

c++ - malloc如何分配内存以及Heap的大小是多少?

python - ubuntu 上的 lunatic-python/lupa 导入问题

Lua:如何从数字列表中读取内容