Erlang enif_realloc_binary 内存复制

Erlang enif_realloc_binary memory copying

当我们只是 trim 大小时,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);

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