一般是需要release的  这样避免memory leak比如
  char buf[128];
  const char *str = env->GetStringUTFChars(prompt, 0);
  printf("%s", str);
  (*env).ReleaseStringUTFChars(prompt, str);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  gets(buf);
  return (*env).NewStringUTF(buf);

解决方案 »

  1.   

    直接返回
    return env->NewStringUTF(buf);
    就可以不用释放了,只要不是从参数中接收一个字符串来楼上的兄弟env->为什么要转换为(*env).呢?
    你转换成值了,调用时又要去寻找地址,转换成指针
      

  2.   

    直接返回
    return env->NewStringUTF(buf);
    就可以不用释放了,只要不是从参数中接收一个字符串来
    --------------------------
    同意,从一个jstring转成char*,要释放资源直接返回
    return env->NewStringUTF(buf);
    就可以不用释放了,只要不是从参数中接收一个字符串来
    -------------
    他是c用太多了 呵呵