关于函数中的new操作导致的内存泄漏的问题???
请教各位:
下面是一个实现jni中的字符转换的功能的函数,这个函数里面rtn 出现了malloc的操作,而在这个函数里有不能释放,因为要将这个结果返回,可是使用这个函数的人不知道要释放这段内存,这样就造成了内存的泄漏,请问各位有什么好的方法能避免呢? 是不是将结果作为out的参数返回呢。
char* jstringToWindows( JNIEnv *env, jstring jstr )
{
int length = (env)->GetStringLength(jstr );
const jchar* jcstr = (env)->GetStringChars(jstr, 0 );
char* rtn = (char*)malloc( length*2+1 );//-------------就是这里了
int size = 0;
size = WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,(length*2+1), NULL, NULL );
if( size <= 0 )
return NULL;
(env)->ReleaseStringChars(jstr, jcstr );
rtn[size] = 0;
return rtn;
}
注:其中的env jstring等都是更java的jni相关的参数