有高人能帮忙查出原因吗

typedef struct
{
UINT16 Id;
UINT16 wide;
}A_STRUCT;

typedef struct
{
UINT16 Id;
UINT16 length;
}B_STRUCT;

static const A_STRUCT group1[] =
{
{ 2, 2},
。。。
}
static const B_STRUCT group2[] =
{
{ 4, 3},
。。。
}

void loadA(uint16 index,A_STRUCT * aa)
{
aa->id = group1[index].id;
aa->wide = group1[index].wide;
}
void loadB(uint16 index,B_STRUCT * bb)
{
bb->id = group2[index].id;
bb->length= group2[index].length;

}

void main1(void)
{
A_STRUCT mm;

loadA(0,&mm);

}

void main2(void)
{
A_STRUCT mm;
B_STRUCT nn;

loadA(0,&mm);
loadB(0,&nn);
}
在编译main1的时候mm.id = 2,mm.wide = 2
但是在编译main2的时候mm.id = 65535,mm.wide = 65535,nn.id = 65535,nn.length=65535.
请问这是怎么回事? 随便单独调用哪个函数的时候都没有问题,但是只要连续调两个函数的时候就出问题了,反复测试都是这样,有高人能帮忙查出原因吗?
[1032 byte] By [hansl] at [2008-1-9]
# 1
没有用new?
个人意见
mochen5460-mochen at 2007-10-19 > top of Msdn China Tech,C/C++,C语言...
# 2
刚试过,没什么错误,使用下面的语句:
A_STRUCT mm;
B_STRUCT nn;

loadA(0,&mm);
loadB(0,&nn);
cout<<mm.id<<" "<<mm.wide<<endl;
cout<<nn.id<<" "<<nn.length<<endl;

输出如下:
2 2
4 3

不过楼主其他的拼写错误好多.....
mochen5460-mochen at 2007-10-19 > top of Msdn China Tech,C/C++,C语言...
# 3
当初为了避免过多的 分配内存 ,所以用的结构变量。
现在的问题是 输出的结果好象是越界了,但我又查不出是在哪里越界,还望指出
另: 楼上的 能说一下我的拼写错误的地方吗? 我以后会注意的
hansl at 2007-10-19 > top of Msdn China Tech,C/C++,C语言...