-
Data: 2015-12-03 16:08:39
Temat: Re: Pakowanie struktur
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Thursday, December 3, 2015 at 3:05:24 PM UTC+1, Tomasz Kaczanowski wrote:
> W dniu 2015-12-03 15:00, M.M. pisze:
> > On Thursday, December 3, 2015 at 2:34:00 PM UTC+1, Tomasz Kaczanowski wrote:
> >> W dniu 2015-12-03 14:08, M.M. pisze:
> >>> On Thursday, December 3, 2015 at 1:09:14 PM UTC+1, Tomasz Kaczanowski wrote:
> >>>
> >>>> i gdzieniegdzie będzie mały bum, bo *((int*)(buf+2)); może mieć zdziebko
> >>>> inną zawartość, niż nam się wydaje,
> >>>
> >>> Nie rozumiem. W jakich sytuacjach może mieć inną zawartość? Na moje
> >>> albo reprezentacja bitowa się zgadza, albo nie. Jeśli nie, to w
> >>> ogóle nie można używać kopiowania bitów.
> >>
> >> Tam gdzie zmienne muszą mieć wyrównane adresy. O ile w przypadku
> >> spakowanej struktury przy odczycie kompilator wykona za nas odpowiednie
> >> operacje, to w takim przypadku, gdy rzutujesz dane spod adresu, mówisz
> >> kompilatorowi "wiem co robię, nie wtrącaj się", a, że wynik może w takim
> >> przypadku być inny, cóż...
> >
> > To przy operacji:
> > *((int*)(buf+2))
> > kompilator nie wygeneruje takiego samego kodu jak przy wypakowaniu
> > inta przesuniętego o 2 bajty w strukturze? Myślałem że na danej
> > platformie kompilator bezpiecznie przerzuci dane na wyrównany adres i
> > dopiero potem zacznie operować na tych danych.
>
>
> z doświadczenia wiem, że nie poprawne było dopiero
>
> int zmienna;
> memcpy(zmienna, (buf+2), sizeof(int));
Jeśli wcześniej było:
memcpy( buf+2 , &zmienna , sizeof(int) );
To też nie widzę zagrożenia. Rozmawiamy rzecz jasna o zgodnym formacie
na poziomie bitów.
Gdy ktoś upakował dane przy pomocy memcpy, a potem odzyskuje przez:
*((int*)(buf+2))
to obawiam się, że nie zawsze zadziała, o ile się nie mylę, to zadziała
tylko na bigendian.
Pozdrawiam
Następne wpisy z tego wątku
- 03.12.15 16:19 M.M.
- 03.12.15 16:21 witek
- 03.12.15 16:23 M.M.
- 03.12.15 17:29 Maciej Sobczak
- 03.12.15 17:45 witek
- 03.12.15 17:56 M.M.
- 03.12.15 18:02 M.M.
- 03.12.15 18:15 M.M.
- 03.12.15 18:37 witek
- 03.12.15 18:40 witek
- 03.12.15 18:57 M.M.
- 04.12.15 09:43 Tomasz Kaczanowski
- 04.12.15 14:18 Maciej Sobczak
- 04.12.15 21:26 M.M.
- 07.12.15 10:14 Tomasz Kaczanowski
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO