Resultados da pesquisa a pedido "placement-new"
matriz de caracteres como armazenamento para posicionamento novo
O C ++ legal a seguir tem um comportamento bem definido? class my_class { ... }; int main() { char storage[sizeof(my_class)]; new ((void *)storage) my_class(); }Ou isso é problemático devido a considerações de fundição / alinhamento de ponteiro?
CUDA: agrupando a alocação de memória do dispositivo em C ++
Estou começando a usar o CUDA no momento e tenho que admitir que estou um pouco decepcionado com a API C. Entendo os motivos da escolha C, mas, se a linguagem tivesse sido baseada em C ++, vários aspectos seriam muito mais simples, por exemplo, ...
C ++, é possível chamar um construtor diretamente, sem novo?
Posso chamar o construtor explicitamente, sem usarnew, se eu já tenho uma memória para objeto? class Object1{ char *str; public: Object1(char*str1){ str=strdup(str1); puts("ctor"); puts(str); } ~Object1(){ puts("dtor"); puts(str); free(str); } ...
Legalidade do uso da exclusão do operador em um ponteiro obtido do posicionamento new
Estou certo de que esse código deve ser ilegal, pois claramente não funcionará, mas parece ser permitido pelo C ++ 0x FCD. class X { /* ... */}; void* raw = malloc(sizeof (X)); X* p = new (raw) X(); // according to the standard, the RHS is a ...
Colocação nova e atribuição de classe com membro const
Por que esse comportamento 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ção do padrão seria bom). Esta questão surgiu ...
É `new (this) MyClass ();` comportamento indefinido após chamar diretamente o destruidor?
Emesta questão minha [https://stackoverflow.com/questions/6036086/is-it-valid-to-directly-call-a-virtual-destructor] , @DeadMG diz que reinicializando uma classe através dothis ponteiro é um comportamento indefinido. Existe alguma menção a isso ...
Preciso realmente me preocupar com o alinhamento ao usar o novo operador de posicionamento?
I li thisQuando devo me preocupar com o alinhamento? [https://stackoverflow.com/questions/6474316/when-should-i-worry-about-alignment] mas ainda não sei se preciso me preocupar com o ponteiro não alinhado retornado pelo posicionamento de novo ...
É permitido chamar o destruidor explicitamente seguido pelo posicionamento new em uma variável com vida útil fixa?
Eu sei que chamar o destruidor explicitamente pode levar a um comportamento indefinido por causa da chamada do destruidor duplo, como aqui: #include <vector> int main() { std::vector<int> foo(10); foo.~vector<int>(); return 0; // Oops, ...