- 论坛徽章:
- 0
|
一个结构:
9 struct teacher{
10 char name[MAX_STRLEN];
11 short subject;
12 short take; /* number of classes teacher take */
13 short inclass[MAX_WEEK_LESSON];
14 short day_lesson[7];
15 };
这样的初始化这个teacher结构的一个长ntchr的数组tchrs:
12 for(i=0;i<ntchr;i++){
13 tchrs[i].subject=-1;
14 tchrs[i].take=0;
15 bzero(tchrs[i].day_lesson,sizeof(tchrs[0].day_lesson));
16 wmemset((wchar_t*)tchrs[i].inclass,-1,
17 sizeof(tchrs[0].inclass)/sizeof(tchrs[0].inclass[0]));
18 }
gdb发现它越界了,这里我监视tchrs[0],注意在wmemset之后连day_lesson都变-1了:
15 bzero(tchrs[i].day_lesson,sizeof(tchrs[0].day_lesson));
6: tchrs[0] = {
name = '\0' <repeats 29 times>,
subject = -1,
take = 0,
inclass = {0 <repeats 75 times>},
day_lesson = {0, 0, 0, 0, 0, 0, 0}
}
(gdb)
16 wmemset((wchar_t*)tchrs[i].inclass,-1,
6: tchrs[0] = {
name = '\0' <repeats 29 times>,
subject = -1,
take = 0,
inclass = {0 <repeats 75 times>},
day_lesson = {0, 0, 0, 0, 0, 0, 0}
}
(gdb)
12 for(i=0;i<ntchr;i++){
6: tchrs[0] = {
name = '\0' <repeats 29 times>,
subject = -1,
take = 0,
inclass = {-1 <repeats 75 times>},
day_lesson = {-1, -1, -1, -1, -1, -1, -1}
}
我没语言了,望高人指点 |
|