typedef struct {short x; char y; char z;} TEST;
int main()
{
  TEST test1, test2;
  test1.x = 764; test1.y = -12; test1.z = 109;
  test2.x = 764; test2.y = -12; test2.z = 109;
  if (memcmp(&test1, &test2, sizeof(TEST)) == 0)
  {
    puts("等しい"); /* ●一致しない事もある● */
  }
  return 0;
}

typedef struct {char x; short y; char z;} TEST3;
この場合なら一致しない事があるのも判るけど、
上のソースで一致しない事もあるって本当ですか?