Resultados de la búsqueda a petición "strict-aliasing"

2 la respuesta

Manera correcta, portátil para interpretar el búfer como una estructura.

El contexto de mi problema está en la programación en red. Digamos que quiero enviar mensajes a través de la red entre dos programas. Para simplificar, digam...

3 la respuesta

¿Por qué la optimización mata esta función?

2 la respuesta

C ++ alias estricto cuando no se usa el puntero devuelto por la nueva ubicación

¿Puede esto potencialmente causar un comportamiento indefinido?

4 la respuesta

GCC: exactitud de las advertencias estrictas de aliasing

2 la respuesta

¿Por qué POSIX contradice los estándares ISO C [cerrado]

...

2 la respuesta

Regla de alias estricto de C ++: ¿la exención de alias 'char' es una calle de 2 vías?

Hace solo un par de semanas, supe que el estándar C ++ tenía una estricta regla de alias. Básicamente, hice una pregunta sobre el cambio de bits, en lugar de cambiar cada byte de uno en uno, para maximizar el rendimiento con el que quería cargar ...

2 la respuesta

¿Puede un objeto tener más de un tipo efectivo?

Considere el siguiente código en una plataforma donde el ABI no inserta relleno en las uniones: union { int xi; } x; x.xi = 1;Creo que la segunda línea exhibe un comportamiento indefinido ya que viola la estricta regla de alias: El objeto al ...

2 la respuesta

¿Por qué puedo usar static_cast con void * pero no con char *

Yo sé esoreinterpret_cast [http://en.cppreference.com/w/cpp/language/reinterpret_cast]se usa principalmente yendo hacia o desde unchar*. Pero me sorprendió descubrir questatic_cast [http://en.cppreference.com/w/cpp/language/static_cast]podría ...

3 la respuesta

¿Es legal alias un conjunto de caracteres a través de un puntero a int?

Sé que lo siguiente está explícitamente permitido en el estándar: int n = 0; char *ptr = (char *) &n; cout << *ptr;¿Qué hay de esto? alignas(int) char storage[sizeof(int)]; int *ptr = (int *) &storage[0]; *ptr = 0; cout << *ptr;Esencialmente, ...

5 la respuesta

Advertencia de “desreferenciar el puntero marcado con tipo romperá las reglas de alias estricto”

Yo uso un código donde lanzo una enumeración * a int *. Algo como esto: enum foo { ... } ... foo foobar; int *pi = reinterpret_cast<int*>(&foobar);Al compilar el código (g ++ 4.1.2), recibo el siguiente mensaje de advertencia: dereferencing ...