You don't delete pointers, you delete the memory the pointer points to.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
int* a = newint; // new creates an unnamed integer. Let's call it 'foo'
// 'a' points to 'foo'
int* b = a; // 'b' also points to 'foo'
// at this point, both 'a' and 'b' are pointing to the same thing: 'foo'
delete a; // does not delete a, but instead deletes what a point to.
// since 'a' points to 'foo', this deletes 'foo'
// 'foo' no longer exists
// a and b did not change. They still point to the memory once assigned to 'foo', but since
// 'foo' no longer exists, they are BAD POINTERS and attempting to dereference either
// of them results in undefined behavior