为什么要用
void *enif_alloc_resource(ErlNifResourceType* type, unsigned size)
与
相对void *enif_alloc(size_t size)
当尝试从Erlang C NIF分配内存时?
参考文献没有详细说明为什么。
http://www.erlang.org/doc/man/erl_nif.html enif_alloc
enif_alloc_resource
用于创建资源,这些资源在不再使用时被虚拟机垃圾回收。enif_alloc
的工作原理和malloc
一样,只是使用了Erlang虚拟机的特定实现,而不是操作系统malloc
。查看ErlNifResourceType
的文档以及使用它的函数,了解更多细节。