ARM如何使动态数组内存对齐

Livart_Corp 2019-11-20 10:46:04
现在开发Android的JNI层,arm平台下经常会报SEGV_ADRALN,也就是内存对齐错误,起因是用下标读取一个float的动态数组,数组长度是一定的所以不会是越界。想问一下c++的动态数组是否会发生这种不对齐的情况,若是,该如何让其内存对齐呢?我现在知道可以用#pragma pack(4),但是好像一般用在结构体上?
...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Livart_Corp 2019-11-27
  • 打赏
  • 举报
回复
引用 1 楼 datoulaile123 的回复:
既然是动态数组,那不就是在程序运行中根据某个变量值来确定数组的大小嘛,你是确定不会超过某个值,然后用这个值来对齐的?还有#pragma pack(4)这个确实是让结构体参数对齐的
全局的float**,是二维数组,运行的时候只有读取没有修改它过,而且这个问题并不是在所有安卓手机上出现,也不是每次都出现,但偶尔就是会发生对齐错误
datoulaile123 2019-11-20
  • 打赏
  • 举报
回复
既然是动态数组,那不就是在程序运行中根据某个变量值来确定数组的大小嘛,你是确定不会超过某个值,然后用这个值来对齐的?还有#pragma pack(4)这个确实是让结构体参数对齐的

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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