我正在使用 Erlang 的 NIF,C 函数的结果是一个数组,我想以三点元组列表的形式将它发送回 erlang,每个元组都是两个双精度数的元组。
要创建这个数组,目前我正在这样做:
ans = (ERL_NIF_TERM *)malloc(6*ntri*sizeof(ERL_NIF_TERM));
for (i=0;i<ntri;i++) {
ans[i] = enif_make_tuple3(env,
enif_make_tuple2(env,enif_make_double(env,x1[i]),enif_make_double(env,y1[i])),
enif_make_tuple2(env,enif_make_double(env,x2[i]),enif_make_double(env,y2[i])),
enif_make_tuple2(env,enif_make_double(env,x3[i]),enif_make_double(env,y3[i]))
);
}
到目前为止,它似乎奏效了。但它是正确的吗?我的理由是,在数组的每个单元格上,ans
我有 6 个双精度数,每个双精度数为ERL_NIF_TERM
,所以我根据这个进行分配。
但这是真的吗?
我应该数元组吗?
无论如何大小是ERL_NIF_TERM
多少?double insideERL_NIF_TERM
与 int inside 的大小相同ERL_NIF_TERM
吗?一个 2 个整数的元组也是一个ERL_NIF_TERM
,它的大小是否相同?