日期:2014-05-20  浏览次数:20721 次

jni技术:调用dll出错,access violation?
链接库用C编写,一个函数建立了一个长度1000的指针数组,各指针分配空间均不同,一个函数释放上面内存空间,一次运行中可能重复分配,释放这1000块内存,都可以正确运行
错误1:当遇到在DLL中进行输出printf后,在重新上面的分配,释放这内存,就会发生access   violation错误,printf怎么影响了这个错误?
错误2:在一个函数中要返回jstring类型,
jstring   ret=(*env)-> NewString(env,p,len);其中p内存是malloc分配,返回前free掉,可以运行。但调用此函数后再进行上面1000块内存的分配,释放同样出现上面错误,不free(p)则没问题,或者下次调用此函数时再free(p)上次调用时分配空间也没问题。

请大家说说上面出错的原因?

------解决方案--------------------
很难啊
没研究过
------解决方案--------------------
如果用到多线程的话 使用同步,禁止多个线成同时访问
------解决方案--------------------
blog 更新:
think in java 各章后练习答案.....
http://blog.csdn.net/heimaoxiaozi/

------解决方案--------------------
在free之前,先:
(*env)-> DeleteLocalRef(env, jstr);
------解决方案--------------------
没办法,就下次调用此函数时再free(p)上次调用时分配空间行了