Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
erlangc-NIF中的内存分配_C_Erlang_Alloc_Erlang Nif - Fatal编程技术网

erlangc-NIF中的内存分配

erlangc-NIF中的内存分配,c,erlang,alloc,erlang-nif,C,Erlang,Alloc,Erlang Nif,一个人为什么要用 void *enif_alloc_resource(ErlNifResourceType* type, unsigned size) 相对于 void *enif_alloc(size_t size) 当尝试从Erlang C NIF分配内存时 参考并没有详细说明原因 enif\u alloc\u资源用于创建不再使用时由vm垃圾收集的资源。enif_alloc的工作原理与malloc类似,只是使用了特定于Erlang VM的实现,而不是OSs malloc。有关更多详细信息

一个人为什么要用

void *enif_alloc_resource(ErlNifResourceType* type, unsigned size)
相对于

void *enif_alloc(size_t size)
当尝试从Erlang C NIF分配内存时

参考并没有详细说明原因


enif\u alloc\u资源用于创建不再使用时由vm垃圾收集的资源。enif_alloc的工作原理与malloc类似,只是使用了特定于Erlang VM的实现,而不是OSs malloc。有关更多详细信息,请查看ernifResourceType的文档以及使用它的函数

当使用enif_alloc时,GC的区别是什么?当我释放它时,它只是GC'd吗?当使用enif_alloc时,GC根本不涉及。如果您想要GC,您应该使用资源,如果您要自己管理内存的生命周期,请使用enif_alloc和enif_free。