gpt4 book ai didi

c - 为什么使用 enif_alloc 而不是 malloc

转载 作者:太空狗 更新时间:2023-10-29 15:18:03 25 4
gpt4 key购买 nike

为什么要用

void *enif_alloc(size_t 大小)相对于

void *malloc(size_t 大小);当尝试从 Erlang C NIF 分配内存时?

引用文献没有详细说明原因。

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

我见过使用 malloc 的 NIF 示例,但我从未见过 enif_alloc。它有什么不同之处?为什么更好用?

最佳答案

enif_alloc 使用内部 erlang 内存分配器,这意味着如果内存已经在内部 VM 缓存中可用,它可以使用该内存而不是执行系统调用来获取内存。在某些情况下,这可能会导致更快的内存分配,您必须用您的代码进行测量以确定它是否有任何不同。一般来说,我建议使用 enif_alloc

如果我没记错的话,使用 enif_alloc 也会在发出 erlang:memory 命令时包含使用的内存。

关于c - 为什么使用 enif_alloc 而不是 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com