我的C已经生锈了。考虑上面的代码:我必须释放 buf 的内存还是每次调用都使用相同的 buf 数组?最佳实践是什么?
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);
}
最佳答案
buf
是一个堆栈变量,它会随着方法返回而被回收,这里无需您执行任何操作。
此外,由于它是一个堆栈变量,因此将为每个方法调用分配它。
关于java - JNI释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818794/