在Erlang C NIF中分配内存

时间:2013-01-20 01:56:50

标签: c erlang alloc erlang-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

1 个答案:

答案 0 :(得分:3)

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