专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Brew

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

发布时间:2010-05-30 20:18:05 文章来源:www.iduyao.cn 采编人员:星星草
请教一个结构体初始化的问题
定义一个结构体
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,就又不死了。
小弟百思不得其解,这和字节对齐有关吗?请各位帮忙。 谢谢!


------解决方案--------------------
很可能和字节对齐有关系,在arm上默认是4字节对齐的
------解决方案--------------------
是的,4字节不对齐导致的。
------解决方案--------------------
和字节对齐没有关系。你可以试试看,如果改成大于24的会死,小于24不死的话就是栈被撑爆了。
------解决方案--------------------
arm上是4字节对齐的,但是感觉楼主的问题不是由字节对齐造成的。
C/C++ code
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去掉试试.
------解决方案--------------------
把Const去掉试试
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: