C结构体与JavaBean转化

可紊 提交于 2020-02-27 09:35:07

今天在做jna实验的时候,发现一个问题:

jna中struct有:int,byte,char三种类型的字段,本来我通过struct.getPoint之后,再通过pointer.getChar(5)应该会取得结构体中的char值,可是我发现无论如何都不正确,我将pointer所指的每个byte内存拿出来看,发现pointer.getChar(6)才正确,并且不管原来的char值是英文还是中文都是getChar(6)才正确。这使我想到一个问题,如果我将来要通过jna给C/C++传结构体,在C中如何处理各个字段值呢??

 

C结构体与JavaBean转化

 

java中字节对齐,有一个github项目 javastruct  

字节对齐不是语言强制要求,是硬件上对memory存储信息时做的一些约束。所以C/C++有字节对齐,java语言也有。
C/C++字节对齐是由编译器完成的,java的内存管理师交由JVM管理,所以java的字节对齐也是有JVM控制的,可以参考一下: java jvm字节占用空间分析
 
还有一些帖子: JNA的四种内存对齐方式
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!