在Erlang C NIF中分配内存

为什么会使用

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用于创建在不再使用时由vm收集的垃圾资源。 enif_alloc就像malloc一样,只使用Erlang VM特定的实现,而不是OS的malloc。 请查看ErlNifResourceType的文档以及使用它的函数以获取更多详细信息。