【发布时间】:2015-04-30 20:33:03
【问题描述】:
LuaJIT 知道它定义的 C 类型和数组的长度,但它不检查边界:
ffi = require("ffi")
ten_ints = ffi.typeof("int [10]")
p1 = ten_ints()
print(ffi.sizeof(p1)) -- 40
var_ints = ffi.typeof("int [?]")
p2 = ffi.new(var_ints, 10)
print(ffi.sizeof(p2)) -- 40
p1[1000000] = 1 -- segfault
p2[1000000] = 1 -- segfault
有没有办法让它做到这一点,还是我唯一的选择是编写包装器?
【问题讨论】: