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

2 la respuesta

Podríamos acceder al miembro de un objeto de tipo de clase no existente?

En el estándar c ++, en [basic.lval] /11. [http://eel.is/c++draft/basic.lval#11.6] dice Si un programa intenta acceder al valor almacenado de un objeto a través de un valor gl diferente de uno de los siguientes tipos, el comportamiento no ...

3 la respuesta

s legal reutilizar la memoria de una matriz de tipos fundamental para una matriz de tipos diferente (pero aún fundamental)

Esta es una continuación de esta otrapregunt [https://stackoverflow.com/q/51930334/3545273] sobre la reutilización de la memoria. Como la pregunta original era sobre una implementación específica, la respuesta estaba relacionada con esa ...

3 la respuesta

¿El acceso a través del puntero cambia la semántica de alias estricto?

Con estas definiciones: struct My_Header { uintptr_t bits; } struct Foo_Type { struct My_Header header; int x; } struct Foo_Type *foo = ...; struct Bar_Type { struct My_Header header; float x; } struct Bar_Type *bar = ...; ¿Es correcto decir que ...

3 la respuesta

Is std :: memcpy entre diferentes tipos trivialmente copiables comportamiento indefinido?

He estado usandostd::memcpy evitar aliasing estricto por mucho tiempo Por ejemplo, inspeccionar unfloat, me gustaest [https://stackoverflow.com/a/17790026/8157187]: float f = ...; uint32_t i; static_assert(sizeof(f)==sizeof(i)); ...

6 la respuesta

Reutilizando un búfer flotante para dobles sin comportamiento indefinido

En una función particular de C ++, resulta que tengo un puntero a un gran búfer de flotantes que quiero usar temporalmente para almacenar la mitad de la cantidad de dobles. ¿Existe un método para usar este búfer como espacio reutilizable para ...

2 la respuesta

¿Da a los datos un tipo efectivo cuenta como un efecto secundario?

Supongamos que tengo una porción de datos asignados dinámicamente: void* allocate (size_t n) { void* foo = malloc(n); ... return foo; } Deseo utilizar los datos señalados porfoo como tipo especial,type_t. Pero quiero hacer esto más tarde, y no ...

2 la respuesta

Es una violación de alias estricta alias una estructura como su primer miembro?

Código de muestra struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) } Creo que esto es común y se considera aceptable. El estándar garantiza que no hay relleno inicial en la estructura. Sin ...

2 la respuesta

¿Es un comportamiento indefinido `reinterpret_cast` a` T * `a` T (*) [N] `?

Considere el siguiente escenario: std::array<int, 8> a; auto p = reinterpret_cast<int(*)[8]>(a.data()); (*p)[0] = 42;Es estocomportamiento indefinido? Creo que es. a.data() devuelve unint*, que no es lo mismo queint(*)[8] losreglas de alias de ...

1 la respuesta

¿La herencia a través del desenrollado viola la estricta regla de alias?

Tengo una estructura X que hereda de la estructura Base. Sin embargo, en mi configuración actual, debido a la alineación, el tamaño de X es 24B: typedef struct { double_t a; int8_t b; } Base; typedef struct { Base base; int8_t c; } X;Para ...

2 la respuesta

¿Existe una diferencia (semántica) entre el valor de retorno de la ubicación nueva y el valor emitido de su operando?

¿Existe una diferencia (semántica) entre el valor de retorno de la ubicación nueva y el valor emitido de su operando? struct Foo { ... }; char buffer[...]; Foo *a = new(buffer) Foo; Foo *b = reinterpret_cast<Foo *>(buffer);Hacea yb difieren de ...