【发布时间】:2023-03-26 09:20:01
【问题描述】:
我编写了一个c nif 代码,当我调用函数find_next 时,erlang vm 退出并在struct Node *n = (struct Node*) enif_alloc_resource(MEM_RESOURCE, sizeof(Node)); 行出现分段错误。
C 代码:
struct Node {
int n;
int* elems;
int c;
} Node;
static ErlNifResourceType *MEM_RESOURCE;
static ERL_NIF_TERM find_next_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
int len;
const ERL_NIF_TERM *args;
if (!enif_get_tuple(env, argv[0], &len, &args))
return enif_make_badarg(env);
struct Node *n = (struct Node*) enif_alloc_resource(MEM_RESOURCE, sizeof(Node));
return enif_make_int(env, 0);
}
有什么问题?
【问题讨论】:
-
你有没有在某处调用 enif_open_resource_type()?
-
哦,我忘了。 Tnx!