C++ · Essencial · Inglês · Técnico
new and delete
Operadores que alocam e liberam memória dinâmica. new constrói um objeto no heap e devolve um ponteiro; delete destrói e libera. Arrays usam new[] e delete[].
Onde usar
Aparecem em código legado e dentro da implementação de classes de baixo nível. Em code review, new solto costuma gerar o pedido para trocar por std::make_unique.
Em código
int* p = new int(10);
delete p;
int* a = new int[3]{1, 2, 3};
delete[] a; // new[] exige delete[]Exemplos
We removed every raw new and delete from this module.
Removemos todo new e delete cru deste módulo.
You allocated with new[] but freed with delete, that's undefined behavior.
Você alocou com new[] mas liberou com delete, isso é comportamento indefinido.
Cuidado
Misturar new[] com delete, ou new com delete[], é comportamento indefinido.