ExpertiDict

C++ · Intermediário · Inglês · Informal

dangling pointer

ˈdæŋɡlɪŋ ˈpɔɪntɚsubstantivo

Ponteiro ou referência que aponta para um objeto que já foi destruído ou liberado. Usá-lo é comportamento indefinido, e o programa pode parecer funcionar até quebrar em produção.

Onde usar

Aparece ao retornar referência de variável local, guardar ponteiro para elemento de vector que realocou ou usar um objeto depois do delete. O AddressSanitizer reporta como use-after-free ou use-after-scope.

Em código

int* cria() {
  int local = 5;
  return &local;  // local destruído
}
int* p = cria();
std::cout << *p;  // comportamento indefinido

Exemplos

This returns a pointer to a local variable, so it's a dangling pointer.

Isso retorna um ponteiro para uma variável local, então é um dangling pointer.

The vector reallocated and left a dangling pointer to the old element.

O vector realocou e deixou um dangling pointer para o elemento antigo.

Cuidado

Zerar o ponteiro depois do delete não resolve as cópias dele espalhadas pelo programa.

Sinônimos

ponteiro pendente

Veja também

Todos os termos de C++