在 C 模块中,lua_pushlightuserdata 的元表行为在不同模块之间会发生变化。

我一直在玩弄 Lua C API,但在某些方面还需要自行解决。

我知道不能有使用不同元表的多个轻量级 userdata,但是即使指针属于相同类型,不同的 C 模块中是否可以有具有各自元表的轻量级 userdata?

例如:

Module A: 轻量级 userdata 指向整数类型 + 元表 A Module B: 轻量级 userdata 指向整数类型 + 元表 B

我希望在模块 B 中更改元表时不会覆盖模块 A 中轻量级 userdata 的元表。

有人知道这是否会发生吗?

点赞
用户107090
用户107090

Lightuserdata 无法拥有独立的元表:所有的 lightuserdata 值都有相同的元表,初始值为 nil。如果你为 lightuserdata 值给定一个元表,它将被设置给所有的 lightuserdata 值。拥有独立元表的目的是普通的、完整的 userdata。只需使用完整的 userdata,无需犹豫。

2013-09-18 11:33:26