Resultados da pesquisa a pedido "placement-new"

1 a resposta

Que membro do sindicato se torna ativo após a colocação de novos

Em relação a 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] diz ...

2 a resposta

Existe uma diferença (semântica) entre o valor de retorno do posicionamento novo e o valor convertido de seu operando?

Existe uma diferença (semântica) entre o valor de retorno do posicionamento novo e o valor convertido de seu operando? struct Foo { ... }; char buffer[...]; Foo *a = new(buffer) Foo; Foo *b = reinterpret_cast<Foo *>(buffer);Faza eb diferem de ...

1 a resposta

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

2 a resposta

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

4 a resposta

Como o canal novo sabe qual layout criar?

#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 a resposta

Substituindo um objeto por um objeto do mesmo tipo

O seguinte está bem definido? #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 (p) ...

2 a resposta

Aliasing estrito do C ++ quando não estiver usando o ponteiro retornado pelo posicionamento new

Isso pode causar um comportamento indefinido? uint8_t storage[4]; // We assume storage is properly aligned here. int32_t* intPtr = new((void*)storage) int32_t(4); // I know this is ok: int32_t value1 = *intPtr; *intPtr = 5; // But can one of the ...

3 a resposta

Usando operador new e operator delete com um conjunto de memórias / alocador personalizado

Estou trabalhando na implementação de um pool de memória / alocador de memória e configurando-o em uma mansão em que apenas um tipo de objeto "Cliente" especial pode ser extraído do pool. O cliente pode ser construído diretamente no pool ou pode ...

3 a resposta

É perigoso usar o posicionamento novo em um objeto antigo sem chamar explicitamente o destruidor primeiro?

1 a resposta

Passando o ponteiro nulo para o novo posicionamento

O canal padrão