NewStringUTF是否复制传入的const char *

Does NewStringUTF copy the const char * passed in

官方 JNI API 指定是否在从 const char * 创建 jstring 时进行复制。这是引用:

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

Constructs a new java.lang.String object from an array of characters in modified UTF-8 encoding.

这是否意味着 const char * 的副本已制作或我必须自己 strdup

NewStringUTF 在 Java 堆中创建一个新的 String 对象。该字符串由 Java 堆中的 byte[]char[] 数组支持,并且它不共享您传入的任何 off-heap 数据。

因此,您不需要 strdup,内容将被复制(并可能转换)到 Java 堆中。