Mały problem

Jun 05, 2007 0 Replies

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.


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required