enif_alloc_resource is used to create resources which are garbage collected by the vm when not used any more. enif_alloc works just like malloc, only is uses an Erlang VM specific implementation rather than the OSs malloc. Take a look at the documentation for ErlNifResourceType and the functions which use it for some more details.
Allocating memory in Erlang C NIF
-
16-01-2022 - |
Question
Why would one use
void *enif_alloc_resource(ErlNifResourceType* type, unsigned size)
as opposed to
void *enif_alloc(size_t size)
when trying to allocate memory from an Erlang C NIF?
Reference does not specify much as to why.
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow