在Lua中,有没有办法确定对象的(内存中)大小?
我在Gamepedia上发现了一篇关于Lua对象内存大小的文章,但它并不通用且精确。
答案 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元素的表,但除非使用自己的分配器,否则您将无法将分配限制为特定大小有这种逻辑。