在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的文档以及使用它的函数以获取更多详细信息。