如题:string在ArkTsNative间传递时,会发生内存copy吗?
问题描述:
string在ArkTs<==\>Native间传递时,如下面代码中的注释1、2处会发生内存copy吗?
static napi_value GetString(napi_env env, napi_callback_info info) {
size_t argc = 2;
napi_value args[2] = {nullptr};
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
// 1.获取字符串
size_t name_buf_size = 0;
size_t name_result;
napi_get_value_string_utf8(env, args[0], nullptr, 0, &name_buf_size);
char name[name_buf_size + 1];
napi_get_value_string_utf8(env, args[0], name, name_buf_size + 1, &name_result);
std::string value = "abc";
napi_value result;
napi_create_string_utf8(env, value.data(), value.length(), &result);
// 2.返回字符串
return result;
}
代码中的注释1、2处都会发生内存copy。