2016-10-20 75 views
1
JNIEXPORT jstring JNICALL Java_com_xxx_xpdf_PdfToText_getTextOnly(JNIEnv *env, jclass obj, 
                   jstring pdf_path) { 
    const char *pdf = env->GetStringUTFChars(pdf_path, 0); 

    std::string content; 
    unsigned int i = getTextFromPDF(pdf, &content); 

    env->ReleaseStringUTFChars(pdf_path, pdf); 

    const char *result = content.c_str(); 
    jstring str = env->NewStringUTF(result); 

    return str; 
} 

我需要在這裏發佈strcontent嗎?爲什麼?JNI:我應該何時釋放資源?

回答

2

No. str引用了一個Java對象,它繼續存在於此JNI方法之外,因爲它是返回值。 content是一個C++本地對象,當它的聲明範圍退出時它會被自動銷燬。