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

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

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

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

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); } ...

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

4 la respuesta

CUDA: asignación de memoria del dispositivo de envoltura en C ++

Estoy empezando a usar CUDA en este momento y tengo que admitir que estoy un poco decepcionado con la API de C. Entiendo las razones para elegir C, pero si el lenguaje se hubiera basado en C ++, varios aspectos habrían sido mucho más simples, p. ...

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

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