2012-03-22 4 views
2

My 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

ответ

2

buf является переменным стеком, он будет утилизирован как метод возвращает, нет ничего для вас сделать здесь.

Также, поскольку это переменная стека, она будет выделена для каждого вызова метода.

Смежные вопросы