请教一个结构体初始化的问题
定义一个结构体
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字节对齐的,但是感觉楼主的问题不是由字节对齐造成的。
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去掉试试