2012-03-22 98 views
2

我的C很生鏽。考慮上面的代碼:我是否必須釋放buf的內存或每次調用使用相同的buf數組?最佳做法是什麼?JNI釋放內存

JNIEXPORT jstring JNICALL Java_test_version 
(JNIEnv *env, jobject obj, jint handle) { 

    struct VersionNumber ver; 
    versionNumber_get((void *) handle, &ver); 

    char buf[30]; 
    snprintf(buf, 30, "%d", ver.num); 

    return (*env)->NewStringUTF(env, buf); 
} 
+0

你應該擔心'NewStringUTF'是否使用buf的副本 – UmNyobe 2012-03-22 09:18:31

回答

2

buf是一個堆棧變量,它會被回收作爲該方法返回,有什麼讓你在這裏做。

此外,因爲它是一個堆棧變量,它將被分配給每個方法調用。