Mały problem

Dotyczy arm7, kompilator to gcc.

Więc mam tak:

struct struktura{ unsigned short a; unsigned short b; };

struktura * moja_struktura;

char * bufor = malloc(1000); Na poczatku do bufora zapisuje jakies dane np.

memcpy(bufor, '0',13);

dalej robie tak:

moja_struktura = bufor + 13; moja_struktura->a = 0xbbaa;

No i okazuje sie, ze ostatni bajt danych jest nadpisywany starszym bajtem zmiennej 'a' jezeli struktura jest przesunieta w buforze o nieparzysta liczbe razy.

Po skompilowaniu wyglada to niby dobrze, bo tak:

0xE51B201C ldr r2, [r11, #-28] // r2 adres pierwszego bajtu strukt. 0xE3A03006 mov r3, #0x00000006 0xE1C230BC strh r3, [r2, #12]

Jak pozbyc sie tego problemu? Bo dopisywac do parzystej liczby bajtow raczej nie moge.

Reply to
Artur
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.