Lua FFI 中的数组和指针 - 差异

什么是以下两种代码之间的区别:

myptr = ffi.new("int[1]")

myptr = ffi.new("int[0]")

就我理解来讲,第一个代码创建了一个指向 int 类型的指针,它与一个有一个元素的数组相同。

  1. 该底层结构是动态分配还是静态分配的 C 数组?
  2. 既然 C 没有进行越界检查,那么我假设这里也是一样的。因此 myptr[20] = 11 可以工作,但后期可能会导致问题?
  3. 指针及其关联值是否仅限于其范围,并且它们将被垃圾收集?

示例:

function mod:myfunction()
     self.myptr = ffi.new("int[1]")
     self.myptr[0] = 10
     otherptr = ffi.new("int[1]")
     otherptr[0] = 20
end

--程序的其他地方

mynumber = mod.myptr[0]  --仍然有效吗?
othernumber = otherptr   --仍然有效吗?
  1. int[0] 变体是零长度数组吗?如果是,那么它的用例是什么?

感谢您的时间。

点赞