请教一个结构体初始化的问题

xcj_ysu 2010-05-21 05:40:52
定义一个结构体
typedef struct myStruct
{
const char a[24];
unsigned char b;
unsigned char c;
void *d;
int e;
unsigned int *f;
unsigned int *g;
int h;
int i;
} myStruct;

然后在函数中定义一个变量
myStruct me = {"xyz",0x00,0x00,NULL,0,NULL,NULL,0,0};

在模拟器上没有任何问题,然后nmake也没有报错。但是当手机运行到此句时,就会死掉重启。
当我把第一个变量数组大小由24变为22,就又不死了。
小弟百思不得其解,这和字节对齐有关吗?请各位帮忙。 谢谢!
...全文
1771 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuxu273 2010-07-14
  • 打赏
  • 举报
回复
帮顶!
lenghun00 2010-07-13
  • 打赏
  • 举报
回复
应该是内存对齐的问题
nuist320 2010-07-12
  • 打赏
  • 举报
回复
把Const去掉试试
instantboy 2010-07-09
  • 打赏
  • 举报
回复



myStruct me = {{'x','y','z'},0x00,0x00,NULL,0,NULL,NULL,0,0};
试试看这样行不行
mybrewtest 2010-07-01
  • 打赏
  • 举报
回复
字节对齐???
bxk253387223 2010-06-29
  • 打赏
  • 举报
回复
arm上是4字节对齐的,但是感觉楼主的问题不是由字节对齐造成的。
typedef struct myStruct
{
const char a[24]; // 24字节
unsigned char b; // 1字节
unsigned char c; // 1字节
void *d; // 之前空出2字节,然后分配4字节
int e; // 4字节
unsigned int *f;// 4字节
unsigned int *g;// 4字节
int h;// 4字节
int i;// 4字节
} myStruct;

看一下附近有没有内存破坏的地方~,另外 const char a[24]; 有没有别的地方想要修改它~
songj2me 2010-06-29
  • 打赏
  • 举报
回复
把const去掉试试.
xcj_ysu 2010-06-10
  • 打赏
  • 举报
回复
栈没有撑爆,改为26也是可以的。我也是怀疑和字节对齐有关系
allkillers 2010-05-31
  • 打赏
  • 举报
回复
和字节对齐没有关系。你可以试试看,如果改成大于24的会死,小于24不死的话就是栈被撑爆了。
sxcnfly 2010-05-24
  • 打赏
  • 举报
回复
是的,4字节不对齐导致的。
FLYUP_CHEN 2010-05-22
  • 打赏
  • 举报
回复
很可能和字节对齐有关系,在arm上默认是4字节对齐的
wishifef 2010-05-21
  • 打赏
  • 举报
回复
帮顶!

2,853

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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