void A(void){
unsigned short usWork[2];

usWork[0] = 0x0012
usWork[1] = 0x0000

B(usWork);
}

void B(unsigned short *Buff){
*(Buff+0) &= 0xffff
*(Buff+1) += 0x12345678
}


※上記の様な関数AとBが存在し、AからBをコールする際、
 Bで誤ってshort型に4バイトで計算してしまいました。
 その場合は、関数Aで指定した変数にはどのような値が入るのでしょうか?
 また、関数Aで指定した変数を超えてメモリを使用する恐れはありませんでしょうか?