Question

J'ai un typedef:

typedef unsigned char MyType[2];

Je passe à une fonction et le résultat est FAIL!

void f(MyType * m)
{
*m[0] = 0x55;
*m[1] = 0x66;
}

void main(void)
{
Mytype a;
a[0] = 0x45;
a[1] = 0x89;

f(&a);
}

La manipulation de variable a fonctionne sur 1 main() l'indexation des octets, donc est égal à f {0x45, 0x89}. Cependant, en fonction sizeof les actes d'indexation sur 2 octets (le *m[1] le type).

Donc, en fonction <=>, dans ce cas <=> modifie effectivement la mémoire hors limites.

Pourquoi est-ce, qu'est-ce que j'oublié?

Merci.

Était-ce utile?

La solution

Essayez:

(*m)[1] 

au lieu de *m[1]

Autres conseils

Ah juste travaillé dehors après avoir abandonné! Supports Boy, entre parenthèses.

void f(MyType * m)
{
(*m)[0] = 0x55;
(*m)[1] = 0x66;
}

void main(void)
{
Mytype a;
a[0] = 0x45;
a[1] = 0x89;

f(&a);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top