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

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

6 la respuesta

¿Qué es un constructor en sitio en C ++? [duplicar]

Posible duplicado: La "ubicación nueva" de C ++ [https://stackoverflow.com/questions/222557/cs-placement-new] ¿Qué es un constructor en sitio en C ++? p.ej. Tipo de datos * x = nuevo (y) Tipo de datos ();

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

¿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

Legalidad de usar el operador eliminar en un puntero obtenido de la colocación nueva

Estoy seguro de que este código debería ser ilegal, ya que claramente no funcionará, pero parece estar permitido por el C ++ 0x FCD. class X { /* ... */}; void* raw = malloc(sizeof (X)); X* p = new (raw) X(); // according to the standard, the ...

5 la respuesta

matriz de caracteres como almacenamiento para colocación nueva

¿Es el siguiente C ++ legal con un comportamiento bien definido? class my_class { ... }; int main() { char storage[sizeof(my_class)]; new ((void *)storage) my_class(); }¿O es esto problemático debido a consideraciones de fundición / alineación ...

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

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

5 la respuesta

Realmente tengo que preocuparme por la alineación cuando uso el nuevo operador de ubicación?

Leo esto ¿Cuándo debería preocuparme por la alineación? [https://stackoverflow.com/questions/6474316/when-should-i-worry-about-alignment] pero todavía no sé si tengo que preocuparme por el puntero no alineado devuelto por el nuevo operador de ...

2 la respuesta

STL Colocación de asignación de contenedores nueva

No pude encontrar una respuesta exacta a esta pregunta y, por lo tanto, publiqué aquí. Cuando pienso en el vector, necesita construir objetos en una ubicación de memoria contigua. Esto significa que el vector mantiene la memoria asignada y tiene ...