strict-aliasing

Jaka jest ścisła zasada aliasingu?

Pytając o powszechne, nieokreślone zachowanie w C, dusze bardziej oświecone niż ja odwołałem się do ścisłej zasady aliasingu. O czym oni mówią?

gcc, strict-aliasing i horror stories

W gcc-strict-aliasing-and-casting-through-a-union zapytałem, czy ktoś napotkał problemy z Union punning poprzez wskaźniki. ... ; Zapytałem więc, czy jest to OK w gcc-strict-aliasing-and-casting-through-a-union , ale jak na razie nikt się nie zgadza.

Dlaczego optymalizacja zabija tę funkcję?

[2]}niedawno mieliśmy wykład na uniwersytecie na temat specjalności programistycznych w kilku językach. Wykładowca zapisał n ... ich nie dotykał, nawet jeśli myśli, że nigdy nie są odczytywane lub zapisywane, ale nie wiedziałbym, dlaczego tak się stało.

Ostrzeżenie" dereferencing type-punned pointer złamie zasady strict-aliasing"

Używam kodu, w którym rzucam enum * do int*. Coś takiego: enum foo { ... } ... foo foobar; int *pi = reinterpret_cast<in ... źródłowych i nie chcę tworzyć osobnej reguły Makefile dla tego pliku źródłowego)? I tak, potrzebuję tego rodzaju aliasingu.

Użycie tego wskaźnika powoduje dziwną deoptymizację w hot loop

Ostatnio natknąłem się na dziwną deoptymizację (a raczej przegapiłem możliwość optymalizacji). Rozważmy tę funkcję do efekty ... da na to, że się mylę . Buforowanie wskaźnika członka w gorącej pętli wydaje się być niezbędna ręczna technika optymalizacji.

Dereferencing type - wskaźnik łamie zasady strict-aliasing

Użyłem poniższego fragmentu kodu do odczytu danych z plików w ramach większego programu. double data_read(FILE *stream,int c ... e twój kod. W końcu nie chcę ignorować ostrzeżeń. Co byś polecił? [update] podstawiłem przykład zabawki prawdziwą funkcją.

Jak oddać pamięć sockaddr i uniknąć łamania ścisłych zasad aliasingu

Używam Beeja ' s Guide to Networking i natknąłem się na problem aliasingu. Proponuje funkcję zwracającą adres IPv4 lub IPv6 ... mi praktykami. Ponadto, jeśli ktoś może dokładnie wyjaśnić, gdzie ma miejsce problem z aliasingiem, byłbym bardzo wdzięczny.

będzie rzucać wokół sockaddr storage i sockaddr w break strict aliasing

Po moim poprzednim pytaniu , jestem bardzo ciekawa tego kodu - case AF_INET: { struct sockaddr_in * tmp = ... mplikowane dla powyższego zadania wypełniania struktur. Jest jeszcze jedna zalecany sposób z memcpy , czy jest to bezpieczne?

Aliasing T * z znakiem * jest dozwolony. Czy jest dozwolone również na odwrót?

Uwaga: to pytanie zostało zmienione i zredukowane, aby było bardziej skoncentrowane i czytelne. Większość komentarzy odnosi ... pozwolił na odwrót. Na przykład: char * c = read_socket(...); unsigned * u = reinterpret_cast<unsigned*>(c); // huh?

Poprawny, przenośny sposób interpretacji bufora jako struktury

Kontekst mojego problemu jest w programowaniu sieciowym. Powiedzmy, że chcę wysyłać wiadomości przez sieć między dwoma progra ... niu i ta odpowiedź, jest to zdecydowanie [edytuj - nie] łamanie ścisłego aliasingu i dlatego ma niezdefiniowane zachowanie.

Naruszenie strict-aliasing w C, nawet bez żadnego castingu?

Jak *i i u.i mogą drukować różne liczby w tym kodzie, nawet jeśli i jest zdefiniowana jako int *i = &u.i;? Mogę tylko zał ... ie, że w C99 dopuszczalne jest pisanie przez jednego członka Związku, a następnie czytanie przez innego członka innego typu.)

wyrównana pamięć masowa i ścisłe aliasowanie

Obecnie używam aligned_storage, aby zaimplementować "opcjonalny" Typ podobny do boost:: opcjonalny. Aby to osiągnąć mam takie ... li to możliwe, czułbym się lepiej, gdybyś mógł podać odniesienie do standardu w swojej odpowiedzi (pomaga mi spać w nocy :P).

Czy STD:: memcpy pomiędzy różnymi typami kopiowalnymi jest niezdefiniowanym zachowaniem?

Od dawna używam std::memcpy do ominięcia ścisłego aliasingu. Na przykład sprawdzanie float, Jak to : float f = ...; uint3 ... odpowiedzieć na to pytanie. Z tego co wiem, mógłbym zastąpić std::memcpy prostą pętlą byte-copy i pytanie będzie takie samo.

Czy wszystkie wskaźniki pochodzące od wskaźników do typów struktur są takie same?

Pytanie Pytanie, czy wszystkie wskaźniki pochodzące od wskaźników do typów struktur są takie same, nie jest łatwe do odpowi ... st używany w całym standardzie, nie możemy stwierdzić, czy ma zastosowanie do rekurencyjnego wyprowadzenia takich wskaźników.

Wpisz punning z void * bez łamania surowej reguły aliasingu w C99

Ostatnio natknąłem się na ścisłą regułę aliasingu, ale mam problem ze zrozumieniem, jak używać void * do wykonywania typowani ... wany zarówno przez x, jak i dereferenced y. Jeśli typ-punning jest niezdefiniowany przez void *, jaki jest cel void * w C99?

bitów float i ścisłego aliasingu

Próbuję wyodrębnić bity z floata bez wywoływania niezdefiniowanego zachowania. Oto moja pierwsza próba: unsigned foo(float ... requirement<sizeof(unsigned)==sizeof(float), unsigned>::type u; memcpy(&u, &x, sizeof u); return u; }

Czy użycie wyniku new char [] lub malloc do rzuconego float * jest UB (strict aliasing violation)?

Który z tych kodów ma UB (konkretnie, który narusza ścisłą zasadę aliasingu)? void a() { std::vector<char> v(sizeo ... w C++). I z tego powodu wydaje się logiczne, że b, c & e też go nie ma. Mylę się gdzieś? Może b jest UB, ale c nie jest?