【发布时间】:2014-01-23 02:49:31
【问题描述】:
我有一个C函数如下
ffi.cdef[[
typedef struct {
int index;
char name[10];
} entry_key_t;
extern entry_t *lookup_entry(entry_key_t *key, int *err);
]]
我在传递“int *”时遇到问题,我尝试了以下变体,
本地 err_val = ffi.new("int[1]") 本地 err_val = ffi.new("int *")
程序崩溃,因为传递给函数的“err”为 NULL。 (请注意,我可以在执行 ffi.new("entry_key_t[1]") 后传递指针'key')
我错过了什么?我正在使用 LuaJIT 2.0.2。
【问题讨论】:
-
local err_Val=ffi.new("int[1]")应该可以工作。也许你做错了什么,例如在将指针传递给函数时取消引用它?请注意,没有初始化程序的 ffi.new 会将指针初始化为 0。请在调用lookup_entry时将代码发布到该点 -
对不起,这是我代码中的一个愚蠢的错字。是的,本地 err_Val=ffi.new("int[1]") 和 intPtr() (根据亚历克斯的回答)有效。抱歉打扰了。