Pytanie więc: jak usunąć trwale, raz na zawsze, wskaźnik - czy da się to zrobić i jeśli tak, to jak tego dokonać?
Odwrócę pytanie:
void func() {
int x = 5;
}
Czy da się jakoś "usunąć na trwale, na zawsze" zmienną x? Ręcznie, nie za bardzo. A czy jest sens? Też nie za bardzo - x istnieje tylko w ciele funkcji, więc jak wyjdziesz z func() to tak jakby go nigdy nie było.
Ze wskaźnikiem jest analogicznie:
void func() {
int *a = nullptr;
int *b = new int; // (delete b;)
}
a, b tutaj w zasadzie niczym się nie różnią od x, obie to jakieś proste wartości: x liczbowa, a a/b wskazujące na pamięć (w zasadzie też liczbowe pod maską).
Żadnej tutaj nie ma sensu i potrzeby "usuwać".
(EDIT: natomiast tylko dodam że czasem przydaje się ustawienie wskaźnika na nullptr po delete, żeby zmniejszyć ryzyko ponownego odwołania do zwolnionej pamięci)