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

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

4 la respuesta

¿Cómo eliminar un objeto construido a través de un nuevo operador de colocación?

char * buf = new char[sizeof(T)]; new (buf) T; T * t = (T *)buf; //code... //here I should destruct *t but as it is argument of template and can be //instantiated via basic types as well (say int) so such code /*t->~T();*/ //is incorrect (maybe ...

7 la respuesta

asignación de clase con const miembro

12 la respuesta

Destruya y luego construya un nuevo objeto usando la misma variable

A veces es bueno comenzar de nuevo. En C ++ puedo emplear esta siguiente maniobra simple: { T x(31, Blue, false); x.~T(); // enough with the old x ::new (&x) T(22, Brown, true); // in with the new! // ... } Al final del alcance, el destructor ...

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

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

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

8 la respuesta

C ++, ¿es posible llamar a un constructor directamente, sin nuevo?

¿Puedo llamar al constructor explícitamente, sin usarnew, si ya tengo memoria para el objeto? class Object1{ char *str; public: Object1(char*str1){ str=strdup(str1); puts("ctor"); puts(str); } ~Object1(){ puts("dtor"); puts(str); free(str); } ...

3 la respuesta

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

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