Allocation de mémoire dans Erlang C NIF

Pourquoi utiliserait-on

void *enif_alloc_resource(ErlNifResourceType* type, unsigned size) 

par opposition à

 void *enif_alloc(size_t size) 

lorsque vous essayez d’allouer de la mémoire à partir d’un fichier NIF Erlang C?

La référence ne précise pas beaucoup pourquoi.

http://www.erlang.org/doc/man/erl_nif.html#enif_alloc

    enif_alloc_resource est utilisé pour créer des ressources qui sont récupérées par la machine virtuelle lorsqu’elles ne sont plus utilisées. enif_alloc fonctionne exactement comme malloc, seul utilise une implémentation spécifique à la machine virtuelle Erlang plutôt que le système d’exploitation malloc. Jetez un coup d’œil à la documentation de ErlNifResourceType et aux fonctions qui l’utilisent pour plus de détails.