为什么要使用
void *enif_alloc_resource(ErlNifResourceType* type, unsigned size)
而不是
void *enif_alloc(size_t size)
尝试从Erlang C NIF分配内存时?
参考文献没有详细说明原因。
答案 0 :(得分:3)
enif_alloc_resource用于创建在不再使用时由vm收集的垃圾资源。 enif_alloc就像malloc一样,只使用Erlang VM特定的实现而不是OS的malloc。请查看ErlNifResourceType的文档以及使用它的函数以获取更多详细信息。