JNIEXPORT jbyteArray JNICALL Java_gov_sat_tax_fwsk_util_PORT_VJMJRZDATAIN
(JNIEnv *env, jobject jobj, jstring jfpmw, jint mwtype, jbyteArray jfpmwPre, jbyteArray jer)
{
char fpmwPre[82];
unsigned char outtype[1];
const char *fpmw= (env)->GetStringUTFChars(jfpmw,0);
//AfxMessageBox(fpmw);
int resultCode = JMJRZDATAIN((unsigned char*)fpmw,mwtype,fpmwPre,outtype); //调用C的dll
if(resultCode == 0){
//AfxMessageBox((char*)fpmwPre);
char* str= new char[84];
//memset(str,87,0);
memcpy(str,fpmwPre,82);
str[82] = outtype[0];
str[83] = 0x00;
//str += 83;
//memcpy(str,&resultCode,4);
//int len = strlen((const char *)str);
jfpmwPre = env-> NewByteArray(84);
if (jfpmwPre != NULL) {
env->SetByteArrayRegion(jfpmwPre, 0, 84,(jbyte *)str);
}
//AfxMessageBox((char*)jfpmwPre);
env->ReleaseStringUTFChars(jfpmw,fpmw);
return jfpmwPre;
}else{
char* str= new char[84];
memcpy(str,fpmwPre,82);
str[82] = outtype[0];
str[83] = 0x01;
jfpmwPre = env-> NewByteArray(84);
if (jfpmwPre != NULL) {
env->SetByteArrayRegion(jfpmwPre, 0, 84,(jbyte *)str);
}
env->ReleaseStringUTFChars(jfpmw,fpmw);
return jfpmwPre;
}}
JNIEXPORT jbyteArray JNICALL Java_gov_sat_tax_fwsk_util_PORT_VJMJRZDATAOUT
(JNIEnv *env, jobject obj, jstring jfpmw, jint mwtype, jstring jhzfw, jbyteArray jdatain, jbyteArray joutdata)
{
const char *fpmw= (env)->GetStringUTFChars(jfpmw,0);
const char *hzfw= (env)->GetStringUTFChars(jhzfw,0);
//const unsigned char *datain= (env)->GetStringUTFChars(jdatain,0); jbyte *datain = (env)->GetByteArrayElements(jdatain, 0);
//AfxMessageBox(fpmw); char outdata[256]; int resultNum = JMJRZDATAOUT((unsigned char*)fpmw,mwtype,(unsigned char*)hzfw,(unsigned char*)datain,outdata); // AfxMessageBox((char*)outdata); // if(resultNum == 0){
char* outstr= new char[256];
memcpy(outstr,outdata,256);
joutdata = env-> NewByteArray(256);
if (joutdata != NULL) {
env->SetByteArrayRegion(joutdata, 0, 256,(jbyte *)outstr);
}
env->ReleaseStringUTFChars(jfpmw,fpmw);
env->ReleaseStringUTFChars(jhzfw,hzfw);
//env->ReleaseStringUTFChars(jdatain,datain); return joutdata;
}
以上代码,肯定有东西没有回收造成了内存泄露,高手帮忙
(JNIEnv *env, jobject jobj, jstring jfpmw, jint mwtype, jbyteArray jfpmwPre, jbyteArray jer)
{
char fpmwPre[82];
unsigned char outtype[1];
const char *fpmw= (env)->GetStringUTFChars(jfpmw,0);
//AfxMessageBox(fpmw);
int resultCode = JMJRZDATAIN((unsigned char*)fpmw,mwtype,fpmwPre,outtype); //调用C的dll
if(resultCode == 0){
//AfxMessageBox((char*)fpmwPre);
char* str= new char[84];
//memset(str,87,0);
memcpy(str,fpmwPre,82);
str[82] = outtype[0];
str[83] = 0x00;
//str += 83;
//memcpy(str,&resultCode,4);
//int len = strlen((const char *)str);
jfpmwPre = env-> NewByteArray(84);
if (jfpmwPre != NULL) {
env->SetByteArrayRegion(jfpmwPre, 0, 84,(jbyte *)str);
}
//AfxMessageBox((char*)jfpmwPre);
env->ReleaseStringUTFChars(jfpmw,fpmw);
return jfpmwPre;
}else{
char* str= new char[84];
memcpy(str,fpmwPre,82);
str[82] = outtype[0];
str[83] = 0x01;
jfpmwPre = env-> NewByteArray(84);
if (jfpmwPre != NULL) {
env->SetByteArrayRegion(jfpmwPre, 0, 84,(jbyte *)str);
}
env->ReleaseStringUTFChars(jfpmw,fpmw);
return jfpmwPre;
}}
JNIEXPORT jbyteArray JNICALL Java_gov_sat_tax_fwsk_util_PORT_VJMJRZDATAOUT
(JNIEnv *env, jobject obj, jstring jfpmw, jint mwtype, jstring jhzfw, jbyteArray jdatain, jbyteArray joutdata)
{
const char *fpmw= (env)->GetStringUTFChars(jfpmw,0);
const char *hzfw= (env)->GetStringUTFChars(jhzfw,0);
//const unsigned char *datain= (env)->GetStringUTFChars(jdatain,0); jbyte *datain = (env)->GetByteArrayElements(jdatain, 0);
//AfxMessageBox(fpmw); char outdata[256]; int resultNum = JMJRZDATAOUT((unsigned char*)fpmw,mwtype,(unsigned char*)hzfw,(unsigned char*)datain,outdata); // AfxMessageBox((char*)outdata); // if(resultNum == 0){
char* outstr= new char[256];
memcpy(outstr,outdata,256);
joutdata = env-> NewByteArray(256);
if (joutdata != NULL) {
env->SetByteArrayRegion(joutdata, 0, 256,(jbyte *)outstr);
}
env->ReleaseStringUTFChars(jfpmw,fpmw);
env->ReleaseStringUTFChars(jhzfw,hzfw);
//env->ReleaseStringUTFChars(jdatain,datain); return joutdata;
}
以上代码,肯定有东西没有回收造成了内存泄露,高手帮忙
解决方案 »
- java小程序中的奇怪问题
- 怎么将两位以上的数计算为一位?
- 有关matlab 的 builder for java,
- eclipse中使用JNI需要额外配置么? 遇到一个程序执行问题, 请帮忙!
- 求一正则表达式
- 用JDK编译时出错,请高手帮忙
- 急寻遍历图的算法?
- java初学者编写代码时遇到一个小问题!求大神指导!!!
- 抛出异常:java.security.AccessControlException:Access Denied ( java.lang.RunRimePermission Access ClasslnPackage.sun.jdbc.rowset
- 记得有个C高手说过,实现的过程。 可以用于任何语言(VC、BCB、DELPHI...)。现在记不到了,您帮我回忆一下好吗?
- 什么情况 查不出数据来
- 关于文件读取
这个东西不管吗?
c++ 里面的对象new出来之后 要手动的 delete掉的