Resultados de la búsqueda a petición "placement-new"

1 la respuesta

Qué miembro del sindicato se activa después de la colocación nueva

En relación con este código: #include <string> int main() { union u { u() { i = 0; } ~u() {} int i; std::string s1; std::string s2; } u; new (&u) std::string{}; } [intro.object] / 2 [https://timsong-cpp.github.io/cppwp/n4659/intro.object#2] ...

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 ...

1 la respuesta

Colocación nueva y asignación de clase con miembro constante

¿Por qué es ese comportamiento indefinido? struct s { const int id; // <-- const member s(int id): id(id) {} s& operator =(const s& m) { return *new(this) s(m); // <-- undefined behavior? } };(Cita del estándar sería bueno). Esta pregunta ...

2 la respuesta

¿Está permitido llamar al destructor explícitamente seguido de una nueva ubicación en una variable con una vida útil fija?

Sé que llamar a destructor explícitamente puede conducir a un comportamiento indefinido debido a la llamada de doble destructor, como aquí: #include <vector> int main() { std::vector<int> foo(10); foo.~vector<int>(); return 0; // Oops, ...

4 la respuesta

¿Cómo sabe la ubicación nueva qué diseño crear?

#include <iostream> #include <typeinfo> struct A { int a; }; struct B : virtual A { int b; }; struct C : virtual A { int c; }; struct D : B,C { int d; }; int main() { D complete; B contiguous; B & separate = complete; B * p[2] = {&separate, ...

2 la respuesta

Sobrescribir un objeto con un objeto del mismo tipo

¿Está bien definido lo siguiente? #include <iostream> #include <string.h> using namespace std; struct Const { const int i; Const (int i) : i(i) {} int get0() { return 0; } // best accessor ever! }; int main() { Const *q,*p = new Const(1); new ...

3 la respuesta

¿Las referencias de "revinculación" en C ++ son legales?

¿Es legal lo siguiente en C ++?Por lo que yo puedo decir,

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?

3 la respuesta

Uso de operador nuevo y operador eliminar con un grupo de memoria / asignador personalizado

3 la respuesta

¿Es peligroso usar una ubicación nueva en un objeto antiguo sin llamar explícitamente al destructor primero?