ExpertiDict

C++ · Essencial · Inglês · Técnico

new and delete

nuː ænd dɪˈliːtsubstantivo

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.

Veja também

Todos os termos de C++