c - Erlang enif_realloc_binary 内存复制

标签 c erlang

enif_realloc_binary 是否在 enif_alloc_binary 之后复制数据,当我们只是调整大小时?

代码

ErlNifBinary output;
enif_alloc_binary(length, &output);
produce_output(input.data, length, &output);
enif_realloc_binary(&output, length - 10);

最佳答案

是的。如您所料,如果减小二进制文件的大小,它只会将那么多字节复制到新分配的空间,但如果增加大小,它会复制所有当前分配的字节。查看enif_realloc_binary source了解详情。

关于c - Erlang enif_realloc_binary 内存复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073411/

相关文章:

c - __builtin_va_start(v,l) 的实现

c - 通过 execlp 函数传递参数时出现问题 - C

c++ - `int main(int argc, char* argv<::>)` 如何成为 main 的有效签名?

c - 动态创建的C字符串

c - 如何从 PCM 获取缓冲区?

bash - 启动 Erlang shell/节点时如何运行自定义函数? (即 `.erl` 文件中的函数)

python - 我应该使用在 erlang 中使用 python 的两种方法中的哪一种?

erlang - Erlang R17 发布到现在了吗?

erlang - mnesia delete_object 异常?

erlang - 从 mnesia 集群中删除 not_exist_already 节点(方案)