首页
社区
课程
招聘
[求助]Dex内存加载的Native实现过程中出现的问题
发表于: 2014-1-8 11:57 26792

[求助]Dex内存加载的Native实现过程中出现的问题

2014-1-8 11:57
26792
收藏
免费 0
支持
分享
最新回复 (29)
雪    币: 206
活跃值: (840)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
Object    length        dex
   8           8

sizeof(ArrayObject)  ==      0x18
2014-12-23 17:19
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
这个是不是不太对?0x18?
还有啊length为什么8呢?
2014-12-24 09:42
0
雪    币: 206
活跃值: (840)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
struct的对齐问题
结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值
2014-12-24 13:10
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
这个对齐我也考虑了,自己写了一个这样的结构体在Linux和Android上都进行了测试:
结构定义是这样:
typedef struct{
    int a;
    int b;
} Object;

typedef struct{
    Object c;
    int d;
    long long e[1];
} ArrayObject;


在Linux上用gcc编译加-m32运行结果:
sizeof(int): 4
sizeof(long long): 8
sizeof(Object): 8
sizeof(ArrayObject): 20
offsetof(ArrayObject, c): 0
offsetof(ArrayObject, d): 8
offsetof(ArrayObject, e): 12


在Android上用ndk-build编译得到的结果:
sizeof(int): 4
sizeof(long long): 8
sizeof(Object): 8
sizeof(ArrayObject): 24
offsetof(ArrayObject, c): 0
offsetof(ArrayObject, d): 8
offsetof(ArrayObject, e): 16


这个会不会是编译器内置了什么东西控制了内存对齐?还望指教~
2014-12-24 18:13
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
4.4上我们可以使用Dalvik_dalvik_system_DexFile_openDexFile_bytearray, 5.1上不落地的加载你们有什么思路吗?有参考的博客吗?
2016-8-31 17:31
0
游客
登录 | 注册 方可回帖
返回
//