在Lua中,如何确定对象的大小?

时间:2016-01-06 14:07:22

标签: memory memory-management lua

在Lua中,有没有办法确定对象的(内存中)大小?

我在Gamepedia上发现了一篇关于Lua对象内存大小的文章,但它并不通用且精确。

2 个答案:

答案 0 :(得分:3)

  

在Lua中,有没有办法确定要存储的表是否大于MP大小?

没有

  

在Lua中,有没有办法确定对象的(内存中)大小?

没有

Lua对内存等等封锁不负任何责任。这应该从创建和管理Lua状态的C代码处理。因此,如果您有16MB的限制,那么当您致电dim rs as new ADODB.recordset set rs = new ADODB.recordset rs.Open "cretae table (StudentNumber Integer primary key)", con, 3, 3 时,需要将其内置到lua_State。您传递一个需要跟踪所有此类分配的分配函数。它还会从内存池中分配存储,而不是从堆中分配存储。

当然,分配器无法准确地说出为什么正在进行分配。因此,如果您打算让Lua州也做其他事情,那么就没有办法将这一个特定的表限制为16MB。

如果你对这一个表有这样的特定内存需求,你可能需要在C / C ++中分配和存储它,然后使用Lua接口它暴露给Lua来读取/操纵。

答案 1 :(得分:3)

我会给@NicolBolas提供相同的explanation,但问题的答案也不同。

  

在Lua中,有没有办法确定对象的(内存中)大小?

是的,但您可能需要使用外部模块。请参阅我的earlier answer和具体的lua-getsize模块。

  

在Lua中,有没有办法确定要存储的表是否大于MP大小?

如果您知道具有X元素的表的大小,您可以推断为具有大致相同内容的Y元素的表,但除非使用自己的分配器,否则您将无法将分配限制为特定大小有这种逻辑。