Pointer 分配内存的 问题 很严重

一路长跑 2009-07-30 07:59:01
我现在有个工程需要用java调用dll接口,我需要传递参数给dll接口,我先声明一个指针

Pointer pStr = new Pointer(MemoryBlockFactory.createMemoryBlock(1024*100000));

然后放入数据,这个数据大概有4K,
pStr.setStringAt(0, str);

然后我再取出这个数据:

String str2 = pStr.getAsString();


惊奇的发现 取回的数据 总会丢掉 原来数据的 最后 几个字节的数据, 比如 如果 str = "<?xml version=\"1.0\" encoding=\"gb2312\"?><ctx><Success>1</Success><tree></tree></ctx>";
str2 可能就是"<?xml version=\"1.0\" encoding=\"gb2312\"?><ctx><Success>1</Success>, 为什么呢,不管我传多大的数据,总会丢掉后面的数据、

哪位高手遇到过啊?很急!!!!!!!!!
...全文
276 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
virus7581 2009-07-31
  • 打赏
  • 举报
回复
up
一路长跑 2009-07-31
  • 打赏
  • 举报
回复
解决了,使用 pStr.setMemory(str); 就可以了 之前的那个pStr.setStringAt(0, str); 遇到中文 就转换不了,str中有多少个中文 后面就会漏掉同样多的字符。
junyun414 2009-07-31
  • 打赏
  • 举报
回复
学习中,支持,UP
一路长跑 2009-07-31
  • 打赏
  • 举报
回复
没人么
一路长跑 2009-07-30
  • 打赏
  • 举报
回复
dll中的方法我不知道 怎么实现的, 现在是我放进数据 再马上取出来 就已经不对了,还没开始调dll的借口呢, 但是我传一个
str = " <?xml version=\"1.0\" encoding=\"gb2312\"?> <ctx> <Success>1 </Success> <tree>11111111111111111111111122222222222222222222</tree> </ctx>";

这样就又没问题! 怀疑是 中间的数据 有什么特殊的编码 我中间的数据是这样的:

<t><r>fe_0/1/126_10433-fec_0/1/126_10433_613;Camera 05;I12</r><r>fe_0/1/126_10435-fec_0/1/126_10435_624;Camera 05;I12</r><r>fe_0/1/126_10435-fec_0/1/126_10435_629;Camera 06;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_611;Camera 06;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_619;Camera 07;I12</r><r>fe_0/1/126_10435-fec_0/1/126_10435_628;Camera 07;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_621;Camera 08;I12</r><r>fe_0/1/126_10435-fec_0/1/126_10435_622;Camera 08;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_610;Camera 09;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_620;Camera 10;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_616;Camera 11;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_609;Camera 12;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_618;Camera 13;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_617;Camera 14;I12</r><r>fe_0/1/126_10433-fec_0/1/126_10433_612;Camera 15;I12</r><r></t> 这样的数据会有什么问题呢?
zsyok 2009-07-30
  • 打赏
  • 举报
回复
学习了。。
ZangXT 2009-07-30
  • 打赏
  • 举报
回复
dll中的方法如何实现的?是否用任何字符串测试都有这样的问题?
一路长跑 2009-07-30
  • 打赏
  • 举报
回复
不知道怎么判断结束的,我刚传708个字节的数据 也不能取到后半部分,怎么回事呢?
bigbug9002 2009-07-30
  • 打赏
  • 举报
回复
1024*100000你这么大的空间,用pStr.getAsString()时,方法是怎么判定一个字符串的结束的,这个应该查一下相关文档。
老张-AI 2009-07-30
  • 打赏
  • 举报
回复
指针? java没有指针
阿士匹灵 2009-07-30
  • 打赏
  • 举报
回复
dll接口? 指针??

有点晕

是java吗

一路长跑 2009-07-30
  • 打赏
  • 举报
回复
有人没啊 , 在线等啊!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧