У меня есть typedef:
typedef unsigned char MyType[2];
Я передаю его функции, и в результате получается FAIL!
void f(MyType * m)
{
*m[0] = 0x55;
*m[1] = 0x66;
}
void main(void)
{
Mytype a;
a[0] = 0x45;
a[1] = 0x89;
f(&a);
}
Манипулирование переменной a
в main()
работает с индексацией в 1 байт, поэтому a
равно {0x45, 0x89} Однако в функции f
индексация действует на 2 байта (sizeof
тип).
Таким образом, в функции f
, *m[1]
в данном случае фактически изменяет память за пределы.
Почему это, что я забыл?
Спасибо.