- 论坛徽章:
- 0
|
下面的一段代码的执行结果是第一个printf 输出"aaaaaaaaaacccccbbbbbbbbbbbbbbb"
而执行第二个printf时就 coredump (SUN Solaris上). 不知道为什么?
数组msg和指针str_msg应该是等价的.
main()
{
typedef struct
{
char a[10];
char c[5];
char b[15];
} MSG_NEW;
char msg[30];
char *str_msg = "123456789012345678901234567890"; /*len is 30 too*/
MSG_NEW *p_msg_bss;
int i;
p_msg_bss = (MSG_NEW*)msg;
for(i = 0; i < 10; i++)
{
p_msg_bss->;a = 'a';
}
for(i = 0; i < 15; i++)
{
p_msg_bss->;b = 'b';
}
for(i = 0; i < 5; i++)
{
p_msg_bss->;c = 'c';
}
printf("msg:%s:\n", &msg);
p_msg_bss = (MSG_NEW*)str_msg;
for(i = 0; i < 10; i++)
{
p_msg_bss->;a = 'q';
}
for(i = 0; i < 15; i++)
{
p_msg_bss->;b = 'w';
}
for(i = 0; i < 5; i++)
{
p_msg_bss->;c = 'e';
}
/*this two line cause coredump*/
printf("str_msg:%s:\n", p_msg_bss);
printf("str_msg:%s:\n", str_msg);
} |
|