0
我有一個相對較大的std :: string。我想將它傳遞給Java而不復制。然後傳回另一個JNI庫。什麼是最好的方法?Android JNI:將std :: string傳遞給Java並返回到C++
jlong some_jni_call() {
string str = createLargeString(); // say this is from 3rd lib only returns string
string* strInHeap = new string(str); // this should just increase the reference count?
jlong handle = (long)strInHeap;
return handle;
}
這樣我就可以回傳給JNI:
void use_string(jlong handle) {
string* str = (string*)handle;
// use the str...
delete str; // doesn't look so nice, since people can forget to delete
}
這是一個好辦法?
'string * strInHeap = new string(str)'創建'str'的一個副本。 std:.string不是引用計數。 –
它似乎是某些情況下的引用計數:http://stackoverflow.com/questions/12520192/is-stdstring-refcounted-in-gcc-4-x-c11 – counter