代码之家  ›  专栏  ›  技术社区  ›  St.Antario

newstringutf是否复制传入的常量char*

  •  0
  • St.Antario  · 技术社区  · 6 年前

    官方的JNIAPI指定了在创建 jstring const char * . 这是报价单:

    NewStringUTF
    jstring NewStringUTF(JNIEnv *env, const char *bytes);
    

    构建新的 java.lang.String 来自字符数组的对象 采用改进的UTF-8编码。

    它是指 常量字符* 是我做的还是我必须做的 strdup 是我一个人吗?

    0 回复  |  直到 6 年前
        1
  •  2
  •   apangin    6 年前

    NewStringUTF 在Java堆中创建一个新的字符串对象。字符串后面有 byte[] char[] Java堆中的数组,它不共享传入的任何堆堆数据。

    所以,你不需要 strdup 无论如何,内容将被复制(并且可能被转换)到Java堆。