Resultados da pesquisa a pedido "placement-new"
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) ...
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 ...
É bem definido / legal a colocação de novo várias vezes no mesmo endereço?
(Nota: esta pergunta foi motivada ao tentar criar hackery de pré-processador para gerar uma alocação não operacional para responder a outra pergunta: Macro que aceita novo ...
Destrua e construa um novo objeto usando a mesma variável
Às vezes é bom recomeçar. Em C ++, posso empregar esta seguinte manobra simples: { T x(31, Blue, false); x.~T(); // enough with the old x ::new (&x) T(22, Brown, true); // in with the new! // ... } No final do escopo, o destruidor ...
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, ...
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 ...
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 ...
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?