string在ArkTsNative间传递时,会发生内存copy吗?

如题: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;
}
阅读 213
1 个回答

代码中的注释1、2处都会发生内存copy。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题