Копирует ли NewStringUTF const char *, переданный в - PullRequest
1 голос
/ 21 мая 2019

Официальный JNI API указывает, была ли сделана копия при создании jstring из const char *.Вот цитата:

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

Создает новый объект java.lang.String из массива символов в модифицированной кодировке UTF-8.

Означает ли это копиюиз const char * сделано или я должен strdup это сам?

1 Ответ

2 голосов
/ 22 мая 2019

NewStringUTF создает новый объект String в Java Heap. Строка поддерживается массивом byte[] или char[] в Java Heap и не разделяет передаваемые вами данные вне кучи.

Итак, вам не нужно strdup, содержимое будет скопировано (и, возможно, преобразовано) в Java Heap в любом случае.

...