У меня есть типичный код C ++, который запускает JNI:
JNIEnv* env = NULL;
...
ProcAdd = ( JNI_JVMPROC ) GetProcAddress( hinstLib, "JNI_CreateJavaVM" );
jint createResult = ( ProcAdd ) ( &m_jvm, ( void** ) & env, &vm_args );
Это отлично работает. Однако я не освобождаю env где-нибудь в моем коде. Мне было интересно, если мне нужно освободить его? И если да, то как?
Я запустил PurifyPlus для своего кода, и он дает мне утечку в следующей строке кода выше:
jint createResult = ( ProcAdd ) ( &m_jvm, ( void** ) & env, &vm_args );
Предупреждение от PurifyPlus:
[W] MLK: утечка памяти в 25941 байт из 120 блоков, выделенных в JVM_FindSignal [JVM.DLL]